<span id="mktg5"></span>

<i id="mktg5"><meter id="mktg5"></meter></i>

        <label id="mktg5"><meter id="mktg5"></meter></label>
        最新文章專題視頻專題問答1問答10問答100問答1000問答2000關鍵字專題1關鍵字專題50關鍵字專題500關鍵字專題1500TAG最新視頻文章推薦1 推薦3 推薦5 推薦7 推薦9 推薦11 推薦13 推薦15 推薦17 推薦19 推薦21 推薦23 推薦25 推薦27 推薦29 推薦31 推薦33 推薦35 推薦37視頻文章20視頻文章30視頻文章40視頻文章50視頻文章60 視頻文章70視頻文章80視頻文章90視頻文章100視頻文章120視頻文章140 視頻2關鍵字專題關鍵字專題tag2tag3文章專題文章專題2文章索引1文章索引2文章索引3文章索引4文章索引5123456789101112131415文章專題3
        問答文章1 問答文章501 問答文章1001 問答文章1501 問答文章2001 問答文章2501 問答文章3001 問答文章3501 問答文章4001 問答文章4501 問答文章5001 問答文章5501 問答文章6001 問答文章6501 問答文章7001 問答文章7501 問答文章8001 問答文章8501 問答文章9001 問答文章9501
        當前位置: 首頁 - 科技 - 知識百科 - 正文

        Angular2的管道Pipe的使用方法

        來源:懂視網 責編:小采 時間:2020-11-27 22:25:53
        文檔

        Angular2的管道Pipe的使用方法

        Angular2的管道Pipe的使用方法:管道Pipe可以將數據作為輸入,然后按照規則將其轉換并輸出。在Angular2中有許多內置的Pipe,比如DatePipe、UpperCasePipe和CurrencyPipe等。在這里我們主要介紹如何自定義Pipe。 1. 管道定義 Pipe的定義如下代碼所示: import { PipeTr
        推薦度:
        導讀Angular2的管道Pipe的使用方法:管道Pipe可以將數據作為輸入,然后按照規則將其轉換并輸出。在Angular2中有許多內置的Pipe,比如DatePipe、UpperCasePipe和CurrencyPipe等。在這里我們主要介紹如何自定義Pipe。 1. 管道定義 Pipe的定義如下代碼所示: import { PipeTr

        管道Pipe可以將數據作為輸入,然后按照規則將其轉換并輸出。在Angular2中有許多內置的Pipe,比如DatePipe、UpperCasePipe和CurrencyPipe等。在這里我們主要介紹如何自定義Pipe。

        1. 管道定義

        Pipe的定義如下代碼所示:

        import { PipeTransform, Pipe } from '@angular/core';
        
        /*users: Array<any> = [
         { name: '1', id: 1 },
         { name: '2', id: 2 },
         { name: '3', id: 3 },
         { name: '4', id: 4 },
         { name: '5', id: 5 },
         { name: '6', id: 6 }
        ];*/
        
        @Pipe({ name: 'filterUser' })
        export class FilterUserPipe implements PipeTransform {
         transform(allUsers: Array<any>, ...args: any[]): any {
         return allUsers.filter(user => user.id > 3);
         }
        }
        
        

        如代碼所示,

        1. 需要使用@Pipe來裝飾類
        2. 實現PipeTransform的transform方法,該方法接受一個輸入值和一些可選參數
        3. 在@Pipe裝飾器中指定管道的名字,這個名字就可以在模板中使用。

        注意:當定義完成后,不要忘記在Module的declarations數組中包含這個管道。

        2. 管道使用

        user.template.html實現如下所示:

        <div>
         <ul>
         <li *ngFor="let user of (users | filterUser)">
         {{user.name}}
         </li>
         </ul>
        </div>
        <button (click)="addUser()"> add new user</button>
        

        user.component.ts實現如下所示:

        import { Component } from "@angular/core";
        
        @Component({
         templateUrl: './user.template.html',
        })
        
        export class EnvAppComponent {
         id = 7;
         users: Array<any> = [
         { name: '1', id: 1 },
         { name: '2', id: 2 },
         { name: '3', id: 3 },
         { name: '4', id: 4 },
         { name: '5', id: 5 },
         { name: '6', id: 6 }
         ];
        
         addUser() {
         this.users.push({ name: this.id++, id: this.id++ })
         }
        }
        
        

        在user.component.ts中初始了數據users和定義一個添加user的方法,在user.template.html中使用自定義管道filterUser。

        當啟動應用時,可以發現只有id大于3的user被顯示出來了。可是,當你點擊按鈕添加用戶時,發現并沒有什么反應,數據并沒有改變。這是為什么呢?

        3. 數據變更檢測

        在Angular2中管道分為兩種:純管道和非純管道。默認情況下管道都是純管道。

        純管道就是在Angular檢測到它的輸入值發生了純變更時才會執行管道。純變更也就是說原始數據類型(如String、Number和Boolean等)或者對象的引用發生變化。該管道會忽略對象內部的變化,在示例中,數組的引用沒有發生改變,改變的只是數組內部的數據,所以當我們添加數據時并沒有立即響應在頁面上。

        非純管道會在組件的變更檢測周期中執行,而且會對對象的內部數據進行檢測。

        在我們的示例中將管道變更為非純管道是非常賤簡單的,只要在管道元數據中將添加pure標志為false即可。

        代碼如下所示:

        @Pipe({ name: 'filterUser', pure: false })
        export class FilterUserPipe implements PipeTransform {
         transform(allUsers: Array<any>, ...args: any[]): any {
         return allUsers.filter(user => user.id > 3);
         }
        }
        

        這樣每當我們添加新用戶時,數據就會馬上響應在頁面上了。

        在根模塊聲明的pipe在頁面中引用有效,而在頁面中引用的component中的模板則無效,這也是令我困惑的地方...

        尋求了一些解決方案,大多是要注意得在根模塊中聲明,于是我做了個嘗試,將組件也寫成一個功能模塊,并在組件功能模塊中申明pipe,結果很欣喜,組件中的pipe生效了。

        具體操作方法:

        只需新建組件功能模塊,并在改模塊中申明pipe,myComponent.module.ts

        import { NgModule } from '@angular/core';
        import { IonicPageModule } from 'ionic-angular';
        import { myComponent } from 'myComponent.ts';
        import { HelloPipe } from "hello.pipe.ts";
        
        @NgModule({
         declarations: [
         myComponent,
         HelloPipe
         ],
        
         imports: [
         IonicPageModule.forChild(myComponent)
         ],
        
         exports: [
         myComponent
         ]
        })
        
        export class MyComponent {}
        
        

        大功告成,組件的模板引用pipe得以生效.

        聲明:本網頁內容旨在傳播知識,若有侵權等問題請及時與本網聯系,我們將在第一時間刪除處理。TEL:177 7030 7066 E-MAIL:11247931@qq.com

        文檔

        Angular2的管道Pipe的使用方法

        Angular2的管道Pipe的使用方法:管道Pipe可以將數據作為輸入,然后按照規則將其轉換并輸出。在Angular2中有許多內置的Pipe,比如DatePipe、UpperCasePipe和CurrencyPipe等。在這里我們主要介紹如何自定義Pipe。 1. 管道定義 Pipe的定義如下代碼所示: import { PipeTr
        推薦度:
        標簽: 使用 用法 pi
        • 熱門焦點

        最新推薦

        猜你喜歡

        熱門推薦

        專題
        Top
        主站蜘蛛池模板: 香蕉视频在线观看免费| 亚洲综合色一区二区三区| 久久九九久精品国产免费直播| 国产精品成人无码免费| 亚洲AV永久无码天堂影院| 国产老女人精品免费视频| 亚洲日韩在线中文字幕综合| 国产婷婷高清在线观看免费 | 亚洲视频欧洲视频| 99在线视频免费| 亚洲免费黄色网址| 妞干网免费视频观看| 久久久久亚洲国产AV麻豆 | 国产精品免费在线播放| 亚洲午夜福利在线观看| 久久久国产精品无码免费专区| 久久亚洲中文字幕精品有坂深雪| 日本xxxx色视频在线观看免费| 亚洲∧v久久久无码精品| 久久久久久毛片免费播放 | 亚洲日韩乱码中文无码蜜桃臀网站 | 亚洲国产综合91精品麻豆| 久9久9精品免费观看| 亚洲中文字幕久久精品无码2021| 免费黄色一级毛片| 一道本不卡免费视频| 综合自拍亚洲综合图不卡区| 成人a视频片在线观看免费| 美女视频黄频a免费| 亚洲人成在线电影| 情侣视频精品免费的国产| 久久性生大片免费观看性| 亚洲国产美女在线观看| 免费人成网站在线播放| 99在线观看精品免费99| 色屁屁www影院免费观看视频| 久久久久无码精品亚洲日韩 | 亚洲日本在线观看| 国产精品免费看香蕉| 91成人免费福利网站在线| 亚洲黄页网在线观看|