scrollIntoView при изменении Angular Router - PullRequest
0 голосов
/ 23 октября 2019

Я пытаюсь использовать scrollIntoView, когда моя страница загружается и когда пользователь нажимает одну из кнопок меню. Поэтому я подписываюсь на параметры маршрута в ngOnInit (также пытался в ngAfterViewInit) и внутри там я активирую "scrollIntoView ()". Проблема в том, что он не работает при первой загрузке страницы (если клиент вводит прямо на www.website.co.il/home/componentName вместо www.website.co.il/home), но только если я изменяюмой маршрут после загрузки страницы.

app-routing.module.ts

{ path: '', component: HomeComponent },
{ path: 'home/:section', component: HomeComponent },
{ path: 'home', component: HomeComponent }

navbar.component.html

        <li
            class="menuItem"
            *ngFor="let menuItem of (menuItems$ | async).menuItems; trackBy: trackByFunction">
            <a
                class="menuItem__link"
                [routerLink]="['home', menuItem.link]">{{ menuItem.name }}</a>
        </li>

our-services.component. ts

  this.route.params.subscribe(params => {
    if(params.section === COMP_LINK_NAME) {
      this.container.nativeElement.scrollIntoView({ behavior: "smooth", block: "center", inline: "center" });
    }
  });
}

COMP_LINK_NAME - это постоянный параметр компонента наших услуг

...