Я пытаюсь реализовать прокрутку от одного компонента к другому в своем приложении, но на данный момент это только "переход" к компоненту, а не прокрутка.
Я пробовал следующее:
export class HomeComponent implements OnInit {
scroll(el: HTMLElement) {
el.scrollIntoView({ block: 'start', behavior: 'smooth', inline: 'nearest' });
}
constructor() {
}
ngOnInit() {
}
}
Вот мой шаблон:
<section class = "bg-full bg-home">
<div class = "logo"></div>
<a (click) = "scroll(testPortfolio)" href = "#portfolio" id = "scroll-to-section">
<img src = "../../assets/arrow-scroll.svg" width = "36">
</a>
</section>
<app-about></app-about>
<app-portfolio-slider #testPortfolio></app-portfolio-slider>
<app-contact></app-contact>
В качестве альтернативы я также пытался использовать ViewChild(), но это всегда возвращает undefined, как я предполагаю, потому что <app-portfolio-slider> еще не отображается.
Что мне нужно сделать, чтобы прокрутка происходила плавно?





Так что мое предположение было неверным. Как упоминалось в комментариях @arbghl, автору просто нужно было обернуть целевой элемент с помощью <div>, который имеет метод scrollIntoView(), и использовать этот div в качестве целевого элемента.
Надеюсь, это поможет.
Спасибо. Чтобы ваше решение заработало, мне нужно было обернуть мой <app-portfolio-slider> тегом <div>.
Я бы посоветовал вам обернуть целевой компонент внутри тега HTML, который даст вам элемент HTML, в котором есть метод
scrollIntoView. Фрагмент ниже должен работать<div #testPortfolio> <app-portfolio-slider></app-portfolio-slider> </div>stackblitz.com/edit/angular-rrd1ua