#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. Это именно то, что я пробовал и не сработало, как я уже упоминал в своем посте!