События маршрутизатора Angular.url не загружается с первого раза

#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. Конечно, приложение, над которым я работаю, находится в другом приложении, поэтому, когда оно загружается; в адресной строке что-то есть, я нашел способ обойти проблему, но вы совершенно правы