Я пытаюсь использовать scrollIntoView() для своего проекта Angular 2. У меня есть контейнер div с переполнением, которое увеличивается, когда данные поступают в компонент, и мне нужно прокручивать до конца div по мере поступления данных. Если я использую кнопку и передаю через нее ссылку, это работает нормально.
Пример:
<div class="container">
<button (click)="scrollTo(target)"></button>
-----
-----
<!-- Dynamic content here -->
-----
-----
<div #target class="target" id="target"></div>
И в компоненте:
public scrollTo(el: HTMLElement) {
el.scrollIntoView({behavior: 'smooth'});
}
Проблема в том, что я не хочу использовать кнопку, мне нужно вызвать функцию scrollTo внутри компонента. Я пытался использовать @ViewChildren, document.querySelector и document.getElementById, но ничего не работает.
Пример:
1)
@ViewChildren('target') target: ElementRef;
И в функции:
public scrollTo() {
this.target.nativeElement.scrollIntoView({behavior: 'smooth'});
}
2)
public scrollTo() {
let element = document.getElementById('target');
element.scrollIntoView({behavior: 'smooth'});
}
3)
public scrollTo() {
let element = document.querySelector('.target');
element.scrollIntoView({behavior: 'smooth'});
}
Во всех случаях, если я печатаю элемент с помощью консоли, результат будет таким же:
<div class="target" id="target" _ngcontent-ema-86=""></div>
Но прокрутка идет в нижнюю часть контейнера div только с помощью кнопки.
Дополнительные данные: проект представляет собой надстройку VSTO для PowerPoint и должен работать в IE11. Спасибо за вашу помощь.