1

我在 Angular 的一个列表上实现了CdkVirtualForOf,并将其 templateCacheSize 设置为 150 以提高性能。

但是当我对数据进行排序并滚动时,缓存的模板会破坏视图中的项目。换句话说:我对数据进行排序,并且列表正确更新。然后我向下滚动,但是当我再次向上滚动时,列表中的条目不正确,因为模板缓存。

这个“问题”在 GitHub 上报告。

我尝试禁用模板缓存,这消除了问题,但是使列表执行得非常糟糕,几乎无法使用。

所以...

我该如何处理?有没有办法刷新 cdkVirtualFor 模板缓存?还是有另一种方法可以使用 cdkVirtualFor 进行排序?

我尝试做一个最小的复制,但是虽然我激活了模板缓存,但它没有运行。我把它留在这里供参考,或者如果有人可以告诉我如何让我的复制工作。

https://stackblitz.com/edit/angular-ivy-wzfnem?file=src%2Fapp%2Fapp.component.html

4

1 回答 1

1

我发现出了什么问题。我遵循了上述 Github 问题的评论,并按照建议将我的 ngOnInit 逻辑移至 ngOnChanges。这修复了模板未正确“更新”的问题。

于 2020-08-17T08:16:02.783 回答