上一篇 提到在 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'; |