使用CdkVirtualFor和templateCacheSize使排序工作

问题描述

我已经在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。这样可以解决模板无法正确“更新”的问题。

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...