问题的原因是Angular虚拟滚动在嵌套for循环中不能正确地计算列表项高度,导致滚动位置不正确。解决方法是使用Angular CDK中的CdkVirtualForOf指令代替ngFor,在子列表内使用CdkVirtualScrollViewport指令来计算每个子项的高度。
示例代码如下:
{{j.description}}{{i.title}}
在上方的代码示例中,“items”是外部列表中的项,每个项包含一个子列表“subItems”。我们使用CdkVirtualForOf在外部列表中迭代,“i”是列表项。在“i”下方,我们嵌套了另一个CdkVirtualScrollViewport指令,它使用CdkVirtualForOf迭代每个“i.subItems”的内容,其中“j”是列表项。这个指令使用50像素作为每项的高度。