Угловая маршрутизация — нужна наблюдаемая, которая срабатывает при каждом изменении URL-адреса

#angular

Вопрос:

Мне нужен наблюдаемый поток, который запускается при изменении URL-адреса моего приложения. В частности, мне это нужно для того, чтобы URL-адрес изначально менялся с "/" фактического первого маршрута (например "/home" ).

Я пробовал использовать

 this.router.events.pipe(
      filter((event) => event instanceof NavigationStart)
)
 

но это не работает (т. Е. Это не срабатывает при первоначальном изменении маршрута; я полагаю, что это может быть связано с тем, что это срабатывает только при изменении маршрута в результате взаимодействия пользователя с приложением).

Есть ли обходной путь?

Комментарии:

1. куда вы поместили этого слушателя? ты это туда вставил app.component.ts ?

Ответ №1:

Почему бы не использовать функцию в розетке маршрутизатора?

 <!-- app.component.ts -->
<router-outlet (activate)="onActivate($event)"></router-outlet>
 

компонент в приложении:

 onActivate(event) {
  window.scroll(0, 0);
}
 

Ответ №2:

Не совсем то, что вы просили, но вы можете подписаться на маршрутизатор и оттуда прослушивать изменения

 class MyClass {
  constructor(private router: Router) {
    router.events.subscribe((val) => {
        // see also 
        console.log(val instanceof NavigationEnd) 
    });
  }
}
 

Комментарии:

1. Это именно то, что я пробовал и не сработало, как я уже упоминал в своем посте!