Angular 2 管道触发

标签 angular angular2-template angular-pipe

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

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

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

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

最佳答案

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

  • 你可以让管道变得不纯净

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

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

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

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

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

这种方式会调用管道,因为每次值或参数发生变化时,Angular 变化检测都会调用管道。

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

关于Angular 2 管道触发,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40300867/

相关文章:

Angular 2 路由在部署到 Http 服务器时不起作用

angular - 如何在异步管道上使用自定义管道?

Angular 4 - 如何在输入类型中使用货币管道

angular - 数字管道 0 或 2 位小数

angular - 如何在 Visual Studio Code(热键)中格式化文件?

Angular2,单击按钮选中或取消选中复选框

javascript - 以 Angular 将 map 转换为json对象

angular - 如何在 Angular Material Table 单元格中显示一张或多张图像

json - response.json 不是函数。 Angular 火

Angular 2 阅读更多指令