Определенно есть другой способ сделать это.
Чтобы ответить вам, вы, вероятно, можете проверить существование экземпляра компонента и, возможно, можете создать его заново по требованию.
Но вы не должны.
Мало того, что это излишне, но вы также должны позволить Angular управлять инжекторами, иначе (если вы не знаете, что делаете), вы столкнетесь с некоторыми забавными проблемами.
Чтобы кратко объяснить вам: перезагрузка маршрута не запускает жизненный цикл компонента.Жизненный цикл компонента начинается, когда он создается, и заканчивается, когда он уничтожается (что означает «больше не в DOM»).
Когда вы перезагружаете маршрут, компонент не уничтожается, следовательно, ваша проблема.
Чтобы решить эту проблему, подпишитесь на события изменения маршрута в вашем хуке жизненного цикла:
ngAfterViewInit() {
this.router.events
.pipe(filter(event => event instanceof NavigationEnd))
.subscribe(event => /* do something */);
}
Я отправил наблюдаемому только прослушивание последнего события стека (в противном случае ваша подписка будетпобежал много раз).