7

我有一系列模型。在模板中我使用管道

<div class="card-panel" *ngFor="let card of cards | sortByType">
    <card-view [card]="card" [autoupdate]="true"></card-view>
</div>

在每个组件中,我都有一个用于更新数据的计时器。但是当模型更新时,管道没有再次运行。在这种情况下,有没有办法强制运行管道或做一些有角度的方式

在卡片视图中,我有一个更新卡片变量的计时器。但是 Angular 没有捕捉到触发管道的这种变化

4

1 回答 1

17
  • 您可以创建一个副本,cards然后 Angular2 更改检测会检测到更改并再次执行管道。

  • 你可以使管道不纯

@Pipe({ name: 'sortByType', pure: false})

这会导致每次运行更改检测时都会执行您的管道。

您可以使用 IterableDiffer 进行自定义更改检测,并在数组实际上没有更改时返回缓存结果。

使用此选项,您必须小心不要导致严重的性能下降。

  • 您可以将附加参数传递给您更新的管道(例如,每次数组更改时都会增加的数字。

通过这种方式调用管道是因为每次值或参数更改时 Angular 更改检测都会调用管道。

缺点是使用起来比较麻烦。

于 2016-10-28T08:55:00.083 回答