Angular 4 cdk table trackby不起作用。整个表格被重新渲染

时间:2017-10-25 08:50:53

标签: angular angular-cdk

解决: 问题出在rxJS线程中。一个线程过于频繁地传递空数组,因此它重置了表。

该表每4秒更新一次。要停止闪烁,我应用trackBy函数。我看到该函数被触发,但整个表被重新渲染。我想我做错了什么。 我所做的... 设置跟踪功能。

<mat-table ... [trackBy]="trackById">

实施跟踪功能。

 trackById(index, item) {
    console.log(item._id);
    return item._id;
  }

该表由表格的数据源更新更新。

 updateOperations() {
    this.dataSource = new Source(this.forexService);
  }

整个组件都在https://gist.github.com/vlikin/6f130c53b1fd38116afe20d15a2afc40

此组件显示操作列表。它从两个可观察对象中检索数据。表的数据源创建一次。数据更改由行为主题数据S启动。数据检索过程位于函数update中。 mat-table组件使用必须优化输出的指令trackBy。但它仍然在闪烁。

有两个有和没有trackId的傻瓜: 使用 - https://embed.plnkr.co/wK5Jh4tIgY9p9Gw4rfhx/ 没有 - https://embed.plnkr.co/Rc9z9aXlalQe8yWpGjUq/

根本没有这样的效果。在我的应用程序中,它正在闪烁。

我希望,任何人都会帮助我。问候。

1 个答案:

答案 0 :(得分:0)

这是一个逻辑问题。 DataSource由几个流组合而成。因此,其中一个流重置了数据。