1

已解决:问题出在 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

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

有和没有 trackId 的两个 plunk: 有 - https://embed.plnkr.co/wK5Jh4tIgY9p9Gw4rfhx/ 没有 - https://embed.plnkr.co/Rc9z9aXlalQe8yWpGjUq/

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

我希望,有人会帮助我。问候。

4

1 回答 1

0

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

于 2017-10-31T11:59:20.913 回答