ScrollIntoView() angular 7 не прокручивается

Я пытаюсь реализовать прокрутку от одного компонента к другому в своем приложении, но на данный момент это только "переход" к компоненту, а не прокрутка.

Я пробовал следующее:

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> еще не отображается.

Что мне нужно сделать, чтобы прокрутка происходила плавно?

Я бы посоветовал вам обернуть целевой компонент внутри тега HTML, который даст вам элемент HTML, в котором есть метод scrollIntoView. Фрагмент ниже должен работать <div #testPortfolio> <app-portfolio-slider></app-portfolio-slider> </div>stackblitz.com/edit/angular-rrd1ua

arbghl 24.02.2019 10:49
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Angular и React для вашего проекта веб-разработки?
Angular и React для вашего проекта веб-разработки?
Когда дело доходит до веб-разработки, выбор правильного front-end фреймворка имеет решающее значение. Angular и React - два самых популярных...
Эпизод 23/17: Twitter Space о будущем Angular, Tiny Conf
Эпизод 23/17: Twitter Space о будущем Angular, Tiny Conf
Мы провели Twitter Space, обсудив несколько проблем, связанных с последними дополнениями в Angular. Также прошла Angular Tiny Conf с 25 докладами.
Угловой продивер
Угловой продивер
Оригинал этой статьи на турецком языке. ChatGPT используется только для перевода на английский язык.
Мое недавнее углубление в Angular
Мое недавнее углубление в Angular
Недавно я провел некоторое время, изучая фреймворк Angular, и я хотел поделиться своим опытом со всеми вами. Как человек, который любит глубоко...
Освоение Observables и Subjects в Rxjs:
Освоение Observables и Subjects в Rxjs:
Давайте начнем с основ и постепенно перейдем к более продвинутым концепциям в RxJS в Angular
0
1
7 849
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Так что мое предположение было неверным. Как упоминалось в комментариях @arbghl, автору просто нужно было обернуть целевой элемент с помощью <div>, который имеет метод scrollIntoView(), и использовать этот div в качестве целевого элемента. Надеюсь, это поможет.

Спасибо. Чтобы ваше решение заработало, мне нужно было обернуть мой <app-portfolio-slider> тегом <div>.

Nicole Kemp 24.02.2019 19:45

Другие вопросы по теме