角度虚拟滚动跳转

时间:2021-05-11 10:38:07

标签: angular angular-material scrollview angular-cdk-virtual-scroll

我正在使用 Angular Material Virtual scroll,项目被正确加载到 DOM 中,但是在滚动时它会跳来跳去并自动跳到最后。

<cdk-virtual-scroll-viewport #scrollViewport  (scrolledIndexChange)="scrolled($event)" [itemSize]="ITEM_SIZE"  class="my-virtual" >
    <div *cdkVirtualFor="let elem of elemtArray;" class="input-field-container ">

        <div class="my-style" >{{elem}} </div>

    </div>
</cdk-virtual-scroll-viewport>

滚动方法的输出如下,如果出现故障:

Scrolled:  105
Scrolled:  115
Scrolled:  106
Scrolled:  117
Scrolled:  109
Scrolled:  119
Scrolled:  110
Scrolled:  121

如果发生这种情况,它会自动滚动到虚拟滚动的末尾。

1 个答案:

答案 0 :(得分:1)

虚拟滚动依赖于可计算的元素高度来计算偏移量。要控制这一点,请将 itemSize 的输入 cdk-virtual-scroll-viewport 设置为您希望项目具有的任何高度(以 px 为单位)。

如果您的 ITEM_SIZE 与实际商品尺寸不符,那么您描述的行为就会发生。

示例:

CSS:

.my-style {
    height: 42px;
}

html:

<cdk-virtual-scroll-viewport [itemSize]="42" [...]>
     <!-- ... --->
</cdk-virtual-scroll-viewport>