Angular 2 管道触发
Angular 2 pipe triggering
我有一组模型。在模板中我使用 pipe
<div class="card-panel" *ngFor="let card of cards | sortByType">
<card-view [card]="card" [autoupdate]="true"></card-view>
</div>
在每个组件中,我都有一个用于更新数据的计时器。但是当模型更新时,管道没有再次 运行 。在这种情况下,有没有办法强制 运行 管道或做一些 angular 方式 。
在卡片视图中,我有一个更新卡片变量的计时器。但是 Angular 没有捕捉到触发管道的变化
您可以创建 cards
的副本,而不是 Angular2 更改检测检测到更改并再次执行管道。
你可以让管道变得不纯净
@Pipe({ name: 'sortByType', pure: false})
这会导致每次更改检测 运行 时执行管道。
您可以使用 IterableDiffer 进行自定义更改检测,并且 return 在数组实际没有更改时缓存结果。
使用此选项时,您必须小心不要导致严重的性能下降。
- 您可以将一个附加参数传递给您更新的管道(例如,每次数组更改时都会增加一个数字。
通过这种方式调用管道,因为 Angular 每次值或参数更改时更改检测都会调用管道。
缺点是使用起来比较麻烦。
我有一组模型。在模板中我使用 pipe
<div class="card-panel" *ngFor="let card of cards | sortByType">
<card-view [card]="card" [autoupdate]="true"></card-view>
</div>
在每个组件中,我都有一个用于更新数据的计时器。但是当模型更新时,管道没有再次 运行 。在这种情况下,有没有办法强制 运行 管道或做一些 angular 方式 。
在卡片视图中,我有一个更新卡片变量的计时器。但是 Angular 没有捕捉到触发管道的变化
您可以创建
cards
的副本,而不是 Angular2 更改检测检测到更改并再次执行管道。你可以让管道变得不纯净
@Pipe({ name: 'sortByType', pure: false})
这会导致每次更改检测 运行 时执行管道。
您可以使用 IterableDiffer 进行自定义更改检测,并且 return 在数组实际没有更改时缓存结果。
使用此选项时,您必须小心不要导致严重的性能下降。
- 您可以将一个附加参数传递给您更新的管道(例如,每次数组更改时都会增加一个数字。
通过这种方式调用管道,因为 Angular 每次值或参数更改时更改检测都会调用管道。
缺点是使用起来比较麻烦。