У меня есть компонент, к которому можно добраться по пути:
/parent
В этом компоненте у меня есть дочерние / вложенные маршруты, к которым можно добраться по пути:
/parent/child1
/parent/child2
В компонентах дочерних / вложенных маршрутов у меня есть кнопка, которая возвращает к родительскому компоненту с помощью
this.router.navigate(['parent']);
Я хочу вызвать метод в родительском компоненте только один раз, когда дочерние / вложенные маршруты возвращаются к родительскому.
Но проблема, с которой я столкнулся прямо сейчас, заключается в том, что я не уверен, как я могу это обнаружить. Я пробовал использовать хуки жизненного цикла, но ни один из них мне не помог. Возвращаясь к родительскому объекту, ngOnInit не будет вызываться, а другие хуки жизненного цикла вызываются более одного раза.
Обновлено: Я знаю, что мог бы справиться с этим, имея StateService, который дочерние компоненты вызывают перед маршрутизацией обратно, и родительский элемент будет подключаться к состоянию, но для меня это звучит как плохое решение.
Я не нашел другого способа, кроме использования службы, как описано в редактировании.
Решение @Gianluca помогло мне.





В своем компоненте вы можете использовать
import { Router } from '@angular/router'
constructor(private router: Router){}
this.router.events.subscribe(route => {
//here you have different event types
//NavigationStart tells you the route you come from
//NavigationEnd tells you the route you are reaching
})
Таким образом, вы можете легко проверить, вернетесь ли вы к родителю. Создайте console.info (маршрут), чтобы вы могли видеть возвращенный объект
Добавляя ваше решение к родительскому, я получаю NavigationStart(id: 8, url: '/parent') и NavigationEnd(id: 8, url: '/parent', urlAfterRedirects: '/parent') всякий раз, когда я перенаправляюсь от дочернего к родительскому
У меня аналогичный вариант использования. Удалось ли вам это решить?