#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 лучшим решением или нет?