当我过滤数组时,我们的数据较少,我们没有得到垂直滚动。因此,*cdkVirtualFor
不重新呈现UI。当我们有更多数据时,它会起作用。
如果我始终使用*ngFor
,则始终有效。
使用* ngFor是我的情况下的更好选择,还是我们可以使用* cdkVirtualFor进行一些更改以解决此问题?
或这与cdk-virtual-scroll-viewport
的高度有关吗?
在FixedSizeVirtualScrollStrategy中,这是默认值,有一个名为onDataLengthChanged的方法。仅当传递的项目的引用发生更改时才调用它。为了看到效果,您应该替换整个项目数组。换句话说,您应该将数组视为不可变数组。例如,如果我有一个包含100个项目的数组,并在其上运行以下代码,则虚拟滚动不会自我更新,因为数组引用未更改。
let i = 90;
while (i > 0) {
i--;
this.items.pop();
}
但是如果我用如下代码替换数组引用。它会理解的。并自行更新
this.items = this.items.splice(0, 10);