Angular — scrollIntoView сбрасывается после первоначальной прокрутки

#angular #js-scrollintoview

#angular #js-scrollintoview

Вопрос:

Я использую метод scrollIntoView для элемента внутри крючка жизненного цикла ngAfterViewInit. Если я начну отладку, я увижу, что прокрутка фактически выполняет свою работу изначально, но затем страница сбрасывается и впоследствии прокручивается до верха.

Пример:

 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’} работает нормально, но я не хочу использовать это в моем случае.
  • Выполнение scrollIntoView внутри setTimeout(() => scrollIntoView, 100) работает, но кажется взломанным?

Есть идеи относительно того, почему это происходит и является ли setTimeout лучшим решением или нет?