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 を実行すると機能しますが、ハッキーに感じますか?

なぜこれが起こっているのか、setTimeout が最善の解決策であるかどうかについてのアイデアはありますか?

4

0 に答える 0