问题描述
我已经在Angular的列表中实现了CdkVirtualForOf,并将其templateCacheSize设置为150以提高性能。
但是,当我对数据进行排序和滚动时,缓存的模板会拧紧视图中的项目。换句话说:我对数据进行排序,并且列表正确更新。然后我向下滚动,但是当我再次向上滚动时,由于模板缓存,列表中的条目不正确。
此“问题”是在GitHub here上报告的。
我尝试禁用模板缓存,这消除了问题,但是使列表执行得非常糟糕,几乎无法使用。
所以...
我该如何处理?有没有一种刷新cdkVirtualFor模板缓存的方法?还是我可以使用cdkVirtualFor进行排序工作的另一种方法?
我尝试进行最小程度的复制,但是尽管模板高速缓存已激活,但它并未运行。我将其留在此处以供参考,或者如果有人可以告诉我如何进行我的复制工作。
https://stackblitz.com/edit/angular-ivy-wzfnem?file=src%2Fapp%2Fapp.component.html
解决方法
我弄清楚出了什么问题。我followed a comment来自上面提到的Github问题,并按照建议将ngOnInit逻辑移到了ngOnChanges。这样可以解决模板无法正确“更新”的问题。