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 を実行すると機能しますが、ハッキーに感じますか?
なぜこれが起こっているのか、setTimeout が最善の解決策であるかどうかについてのアイデアはありますか?