解决: 问题出在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/
根本没有这样的效果。在我的应用程序中,它正在闪烁。
我希望,任何人都会帮助我。问候。
答案 0 :(得分:0)
这是一个逻辑问题。 DataSource由几个流组合而成。因此,其中一个流重置了数据。