Угловой 4 - разрешение маршрута для вложенного компонента?
У меня есть следующая структура:
Parent Component
|__Nested Component 1
|__Nested Component 2
|__Nested Component 3
Я пытаюсь разрешить некоторые данные в Nested Component 3
- единственный компонент здесь, у которого есть маршрут, это родительский компонент. Есть ли способ получить данные разрешения в Nested Component 3 без:
A. Использование @Input - это грязная цепочка из трех компонентов.
Б. Использование какого-либо сервиса - я понимаю, что могу сохранить данные в каком-то сервисе и извлечь их в Nested Component 3 - возможно, это правильный путь, но я ищу другие варианты. Хотя это может быть единственный реальный путь.
Итак, каков лучший подход здесь. В Iirc в Angular 1 все дочерние компоненты могут получать разрешенные данные, но здесь это не так.
1 ответ
Вы можете получить параметры маршрута родительских маршрутов следующим образом:
ngOnInit() {
const pathFromRoot = this.route.pathFromRoot;
let paramsSub = Observable.merge(...pathFromRoot.map(p => p.params));
paramsSub.subscribe(params => {
//emits the params map for each parent route.
console.log(params);
});
}
Просто знайте, что вы получите карту параметров маршрута для каждого маршрута в дереве. Так что в вашем случае обратный вызов по подписке будет запущен дважды.
Вы не можете действительно объединить их все в один смешанный объект, потому что подписка параметров маршрута никогда не "завершается".