我在 ngAfterViewInit 生命周期挂钩内的元素上使用 scrollIntoView 方法。如果我开始调试,我可以看到滚动实际上最初完成了它的工作,但随后页面被重置并滚动到顶部。
例子:
items = [];
constructor(private elementRef: ElementRef) {
for(let i = 0; i < 100; i++) {
this.items.push("Item " + i);
}
}
ngAfterViewInit(): void {
this.elementRef.nativeElement.querySelectorAll('p')[71].scrollIntoView()
}
<p *ngFor="let item of items;">
{{item}}
</p>
解决此问题但不适合我的情况的事情:
- 另一方面,使用 `{behavior: 'smooth'} 效果很好,但我不想在我的情况下使用它。
- 在 setTimeout(() => scrollIntoView, 100) 内执行 scrollIntoView 可行但感觉很hacky?
关于为什么会发生这种情况以及 setTimeout 是否是最佳解决方案的任何想法?