2

在我的Angular应用程序中,我使用了 Angular cdk 中的Virtual Scroll

这是我的组件的模板:

<cdk-virtual-scroll-viewport itemSize="50" class="example-viewport">
  <div *cdkVirtualFor="let item of items" class="example-item">{{item}}</div>
</cdk-virtual-scroll-viewport>

在我的组件类中,我有一个方法可以更改items赋予它新内容的数组。每次调用此方法时,数组的大小都会改变:

reload(newItems) {
  this.items = newItems;
}

调用该方法后reload,项目数组被正确更新,并且视图反映了这一变化。但是,滚动不会回到顶部。

每次items更改数组时,我都希望虚拟滚动以重置顶部的滚动。

4

1 回答 1

6

CdkVirtualScrollViewport我通过在我的组件中注入一个来解决这个问题:

import { CdkVirtualScrollViewport } from '@angular/cdk/scrolling';

// ...
export class MyComponent {
  @ViewChild(CdkVirtualScrollViewport) virtualScroll: CdkVirtualScrollViewport;

  // ...

  reload(newItems) {
    this.items = newItems;
    this.virtualScroll.scrollToIndex(0);
  }
}

打电话this.virtualScroll.scrollToIndex(0);成功了。

于 2019-05-13T20:16:06.440 回答