Как перезагрузить представление после router.navigate в Angular 4?

У меня есть функция перехода в магазин, которая управляется компонентом заголовка и отображает панель мониторинга для этого места.

В этом компоненте заголовка я перехожу к маршруту на приборной панели, даже если я уже на этом маршруте.

this.router.navigate(['/venues', this.currentVenue._id, 'dashboard']);

Но он не запускает хук ngOnInit снова, поэтому мое представление не перезагружается.

Какой правильный обходной путь для такого случая?

1 ответ

Решение

Вам нужно перезагрузить вид? Или просто получить некоторые данные?

Если вам нужно только повторно получить данные на основе параметра маршрутизации, вы можете сделать это:

ngOnInit(): void {
    this.route.params.subscribe(
        params => {
            const id = +params['id'];
            this.getMovie(id);   // <- Or whatever you need to do here
        }
    );
}

В ngOnInit этот код подписывается на параметры маршрута. Таким образом, каждый раз, когда параметры изменяются, даже если представление не изменяется / перезагружается, изменение будет воспринято как часть подписки, и будет выполнен соответствующий обратный вызов.

Другие вопросы по тегам