2

我在 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 是否是最佳解决方案的任何想法?

4

0 回答 0