Угловой 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);
  });
}

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

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

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