#angular #typescript #rxjs
#angular #typescript #rxjs
Вопрос:
Есть ли у кого-нибудь идеи о том, как заставить события маршрутизатора запускаться при первой загрузке страницы / компонента?
У меня есть приведенный ниже основной родительский компонент моего приложения, он работает нормально,
однако, когда приложение загружается в первый раз, оно ничего не возвращает,
Я попытался использовать оператор startWith rxjs, чтобы поместить что-либо в event.url при загрузке страницы,
Но что это делает, так это выдает неверный URL, если вы начинаете в другом месте…
prog(): void {
this.subs = this.router.events
.pipe(
startWith(new NavigationEnd(0, '/', '/dummy/')),
filter((event: NavigationStart) => event instanceof NavigationEnd)
)
.subscribe((event: NavigationStart) => {
Object.keys(this.progressUrls).map((key, i) => {
if (event.url === this.progressUrls[key] amp;amp; event['urlAfterRedirects'] !== '/dummy/') {
return this.isActive = true, this.index = i, this.activeClass = `active${i}`;
}
});
});
}
Комментарии:
1.
Does anyone have any ideas on how to get the router events to fire the first time the page/component is loaded
Они уже загружаются. Также не вводите event как navigationStart, это просто событие.2. Спасибо, я должен был выразиться яснее, в возвращаемом событии «/» нет свойства url, когда компонент загружается впервые, у вас есть какие-либо указания?
3. Нет, я не могу воспроизвести проблему. Я получаю
url: "/"
во всех своих событиях навигации. Как и ожидалось, root загружается с/
, корневым URL. Другие события навигации зависят от вашего маршрутизатора, а какие нет, поэтому у меня недостаточно информации, чтобы что-либо сказать.4. Конечно, приложение, над которым я работаю, находится в другом приложении, поэтому, когда оно загружается; в адресной строке что-то есть, я нашел способ обойти проблему, но вы совершенно правы