Angular2的管道Pipe的使用方法

2022-09-27 06:30:10 字數 1759 閱讀 3338

管道pipe可以將資料作為輸入,然後按照規則將其轉換並輸出。在angular2中有許多內建的pipe,比如datepipe、uppercasepipe和currencypipe等。在這裡我們主要介紹如何自定義pipe。

1. 管道定義

pipe的定義如下**所示:

import from '@angular/core';

/*users: array = [

, ,

, ,

, ];*/

@pipe()

export class filteruserpipe implements pipetransform

}如**所示,

注意:當定義完成後,不要忘記在module的declarations陣列中包含這個管道。

2. 管道使用

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

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

import from "@angular/core";

@component()

export class envappcomponent ,,,

,,

];adduser() )

}}在user.component.ts中初始了資料users和定義乙個新增user的方法,在user.template.html中使用自定義管道filteruser。

當啟動應用時,可以發現只有id大於3的user被顯示出來了。可是,當你點選按鈕新增使用者時,發現並沒有什麼反應,資料並沒有改變。這是為什麼呢?

3. 資料變更檢測

在angular2中管道分為兩種:純管道和非純管道。預設情況下管道都是純管道。

純管道就是在angular檢測到它的輸入值發生了純變更時才會執行管道。純變更也就是程式設計客棧說原始資料型別(如string、number和boolean等)或者物件的引用發生變化。該管道會忽略物件內部的變化,在示例中,陣列的引用沒有發生改變,改變的只是陣列內部的資料,所以當我們新增資料時並沒有立即響應在頁面上。

非純管道會在元件的變更檢測週期中執行,而且會對物件的內部資料進行檢測。

在我們的示例中將管道變更為非純管道是非常賤簡單的,只要在管道元資料中將新增pure標誌為false即可。

**如下所示:

@pipe()

export class filteruserpipe implements pipetransform

}這樣每當我們新增新使用者時,資料就會馬上響應在頁面上了。

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

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

具體操作方法:

只需新建元件功能模組,並在改模組中申明pipe,mycomponent.module.ts

import from '@angular/corewww.cppcns.com';

import from 'ionic-angular';

import from 'mycomponent.ts';

import from "hello.pipe.ts";

@ngmodule()

export class mycomponen程式設計客棧t {}

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

本文標題: angular2的管道pipe的使用方法

本文位址:

angular2,Pipe管道初使用。

以前都知道angular2有管道這個東西,不過,由於沒有使用的必要,也就沒怎麼看。今天,做頁面,接收點選查詢傳來的資料,然後,顯示出來。我的做法是在本地新建乙個object物件result。然後,在資料傳過來的時候,賦值到result。可問題出在,初始化顯示模板時,我使用了 的資料繫結方式,但是,這...

如何自定義Angular2 管道

1.說明 管道用來轉換模板顯示的內容,應用程式中經常出現獲取資料,轉換資料,顯示資料的邏輯。管道就是用來在轉換資料階段起作用的。主要存在兩種型別的管道,pure pipe和impure pipe 2.pure pipe pure pipe,stateless,關注於純粹物件的變更,檢測到輸入值發生了...

angular2 發布angular2模組,服務

上回說到了如何利用npm包管理器發布自己的包,這次咱們就來個實踐。1 寫好自己的元件 2 利用npm發布自己的元件 3 使用包 基於angular2的架構,一般都需要下列檔案 html檔案,css檔案,component檔案,module檔案。component檔案內容 import區域 impor...