angular - 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
一次
解决方案
每次视图更改完成时,使用 AfterViewChecked 将导致列表向下滚动。
您可以尝试使用 ViewChild 设置器,只有在孩子准备好时才会调用它。
@ViewChild(CdkVirtualScrollViewport, { static: false })
set viewport(viewport: CdkVirtualScrollViewport) {
viewport.scrollTo({ bottom: 0 });
}