首页 > 解决方案 > ngAfterViewChecked 卡在循环中

问题描述

我正在尝试<cdk-virtual-scroll-viewport>从底部开始,它有效,但我似乎无法向上滚动

我认为这是因为AfterViewChecked,我试过了AfterViewInit,但似乎没有用。

@ViewChild(CdkVirtualScrollViewport, { static: false }) viewport: CdkVirtualScrollViewport;

ngAfterViewChecked() {
  this.viewport.scrollTo({ bottom: 0 });
}
<cdk-virtual-scroll-viewport itemSize="70">
  <div *cdkVirtualFor="let message of messages">
    {{message}}
  </div>
</cdk-virtual-scroll-viewport>

我怎样才能再次向上滚动?或者只执行AfterViewChecked一次

标签: angulartypescript

解决方案


每次视图更改完成时,使用 AfterViewChecked 将导致列表向下滚动。

您可以尝试使用 ViewChild 设置器,只有在孩子准备好时才会调用它。

@ViewChild(CdkVirtualScrollViewport, { static: false }) 
set viewport(viewport: CdkVirtualScrollViewport) {
   viewport.scrollTo({ bottom: 0 });
}

推荐阅读