【发布时间】:2018-09-21 01:19:50
【问题描述】:
我想使用从 JSON REST API 中提取的新数据经常更新我的数据表(Covalent td-data-table 和几个 ng-template)。多于浏览器的行数,因此用户可能需要垂直滚动。但是当我更新表中的数据时,它会完全重绘,即垂直滚动位置重置为顶部,工具提示闪烁等。
黑客攻击例如保存/恢复垂直滚动,例如以下类型的工作,但它们会造成很多视觉混乱,尤其是在 Firefox 中。
// save vertical scroll
this.scrollTop = this.tableElt.nativeElement.querySelector('.td-data-table-scrollable').scrollTop;
// update table data here
this.data = newData;
// restore vertical scroll
setImmediate(() => {
this.tableElt.nativeElement.querySelector('.td-data-table-scrollable').scrollTop = this.scrollTop;
}
});
我怎样才能干净地更新表(或任何组件)中的数据,而无需修改滚动位置并忍受大量闪烁行为?
如果没有使用 Covalent 数据表的解决方案,是否有另一个 Angular 2+ 控件可以正确处理这个问题?
【问题讨论】:
-
你好,我认为你需要 ngx-infinite-scroll ,它工作得很好,你可以使用 (scrolled) 来触发你请求并获取新数据并且你不会丢失你的滚动位置,这里是一个使用它的例子:echoesplayer.com/#/search/videos
-
在
ngFor你应该使用列表,你使用trackBy函数吗?你是通过指数来做的吗?但你需要它给这个人。如果您将代码放在有问题的地方,它会更容易为您提供帮助。 -
@FatehMohamed 我不清楚如何将 ngx-infinite 与 td-data-table 一起使用。
-
@botika trackBy 听起来我们在正确的轨道上,但 td-data-table 没有 ngFor。我找不到任何方法将 trackBy 与 td-data-table 一起使用。
-
浏览光标后,
<td-virtual-scroll-container [style.height.px]="400" [data]="data" [trackBy]="trackByFn">ref covalent-nightly/virtual-scroll/ - 你能用虚拟卷轴包裹你的桌子吗?
标签: angular html-table scrolltop real-time-updates teradata-covalent