impure pipe 和 binding to a function 使用時機

若我要用 *ngFor = let item of partOfArray 來產生陣列裡的部分元素
使用 impure pipe 還是另外用一個 function 來提供所需元素比較好 ?

impure pipe 會在每個 change detection cycle 時啟動
若是在使用者做出一些動作,像是點擊按鈕之類,是不是使用 function 比較好 ?

例子:

<div *ngFor="let item of partOfArray">
  <h3>{{ item }}</h3>
</div>

<button (click)="change()">filter</button>
array;
partOfArray;
change(): void {
  // 將 partOfArray 設定為 array 中符合的元素
}

是不是比下面好

<div *ngFor="let item of array | SlicePipe: n 或是 filterPipe: n">
  <h3>{{ item }}</h3>
</div>

<button (click)="change()">filter</button>

filterPipe 是自己實作的 impure pipe,SlicePipe 是 angular 提供的
array;
n;
change(): void {
  // 設定 n
}
1個讚

兩種我都會用,但如果不考慮 Reactive 的話,使用 pipe 的機會比較高

若是跟使用者動作有關,使用 function ; 其他情況較常用 impure pipe ?

不一定,這部分真的沒有說什麼情況下要用哪一種會比較好. 就跟 Model Form 或是 Reactive Form 的選擇一樣。但是,我會盡量減少 impure pipe 的使用,能用 pure pipe 會是最好的

換另外一個角度來看好了, 使用 pipe 的好處是什麼? 可以做到怎樣的效果