Angular 4 - Решение маршрута для вложенного компонента?

У меня есть следующая структура:

Parent Component
 |__Nested Component 1
 |__Nested Component 2
     |__Nested Component 3 

Я пытаюсь преобразовать некоторые данные в Nested Component 3 - единственный компонент, у которого есть маршрут, - это родительский компонент. Есть ли способ получить данные разрешения во вложенном компоненте 3 без:

А. Использование @Input — это грязный переход по цепочке из трех компонентов.
Б. Использование какого-то сервиса — я понимаю, что могу сохранить данные в какой-то сервис и получить их во вложенном компоненте 3 — может быть, это способ идти, но я ищу другие варианты. Хотя, возможно, это единственный реальный путь.

Итак, каков наилучший подход здесь. Iirc в Angular 1 все дочерние компоненты могли получать разрешенные данные, но здесь, похоже, это не так.


person VSO    schedule 17.07.2017    source источник
comment
Я думаю, что вариант Б будет лучше. Вы можете использовать хранилище браузера так же, как и сервис.   -  person Prathmesh Dali    schedule 17.07.2017


Ответы (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);
  });
}

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

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

person Steveadoo    schedule 17.07.2017
comment
Спасибо, я попробую это. - person VSO; 17.07.2017