【发布时间】:2017-10-25 08:50:53
【问题描述】:
已解决: 问题出在 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/
根本没有这样的效果。在我的应用程序中它正在闪烁。
我希望,有人会帮助我。问候。
【问题讨论】:
-
只需返回项目 // 或索引和 *ngFor ".....; trackBy: trackById"。如果您不使用 ngFor,请发布更多代码
-
整个组件在这里gist.github.com/vlikin/6f130c53b1fd38116afe20d15a2afc40。该组件显示操作列表。它从两个可观察对象中检索数据。表的数据源创建一次。数据更改由行为主体数据发起。数据回溯过程位于函数
update。 mat-table 组件使用必须优化输出的指令 trackBy。但它仍然在闪烁。 -
Mat-table 没有 trackby 属性,据所知(至少我可以找到任何相关的东西),如果你设置了 console.log在 trackById 方法中,它从未被触发,这更加强化了我认为它不是属性的想法
-
这是 cdk-table 而不是 mat-table,对吧?
标签: angular angular-cdk