上一篇 提到在 Angular Dart 版本的 Component 如果要使用到 ngIf
這一類的 directive
時,需要在該 component
將 coreDirectives
加到 component
的 metadata
內,而要使用內建 pipe
或是自訂 pipe
時,也需要比照辦理,但唯一的差異是必須分別加
內建 Pipe
AngularDart 內建的 Pipe 有以下幾個
- AsyncPipe
- CurrencyPipe
- DatePipe
- DecimalPipe
- JsonPipe
- LowerCasePipe
- PercentPipe
- ReplacePipe
- SlicePipe
- UpperCasePipe
自訂 Pipe
自訂 Pipe 的方式也很簡單,只需要實做 PipeTransform
介面即可,以下有一個簡單的範例
1 | import 'dart:math' as math; |
當寫完自訂 pipe 要在 component
使用時,務必記得要在 component 的 pipes
加入該 pipe class,不然會出現編譯錯誤的訊息
既然是自訂 Pipe,就一定會遇到 pure
與 impure
pipe 的問題,因為 Dart 語言每一個型別都是 Object
,所以要稍微留意一下這部分,像是 List 的操作,就必須留意 pure
與 impure
的設定
設定為 impure
的方式為
1 | 'flyingHeroes', pure: false) ( |
AsyncPipe
AsyncPipe 在 Angular 可以用來接 Promise 或是 Observable,而在 AngularDart 內,可以接 Future 或是 Stream 型別的資料,使用方法是一樣的
1 | import 'dart:async'; |