Дерево данных углового маршрута - PullRequest
0 голосов
/ 07 марта 2019

Мне нужно написать компонент, берущий объект из routeConfigs. Вот так:

route.routeConfig.data['info']

, где маршрут: ActivatedRoute и маршруты настроены так:

const routes: Routes =
  [{
    path: 'people', data: { info: 'Parent' },
    children: [
      { path: '', component: Component1, data: { info: 'Child1' } },
      { path: ':id', component: Component1, data: { info: 'Child2' } },
      { path: 'new', component: Component1, data: { info: 'Child3' } }
    ]
  }];

Так что мне нужна функция, возвращающая мне список объектов / строк, которые находятся в данных конфигурации для текущего маршрута и для каждого родительского маршрута. Для значений выше, когда я помещаю свой компонент в компонент по маршруту /people/new в результате я должен иметь: ["Parent", "Child3"]

Пожалуйста, помогите мне, могущественный All.

1 Ответ

2 голосов
/ 07 марта 2019

Вы можете получить доступ к данным текущего активированного маршрута, введя ActivatedRoute, а затем используя this.activatedRoute.snapshot.data.Но для доступа к родителю вам нужно получить родителя текущего маршрута, используя this.activatedRoute.parent.snapshot.data.Так как может быть любое количество родителей, вы можете рекурсивно пройти по дереву и получить данные.

Создать образец stackblitz для вас.Добавленный необходимый код ниже:

let activatedRoute = this.activatedRoute;
this.data = [];
while (activatedRoute) {
  console.log(activatedRoute.snapshot.data);
  this.data.push(activatedRoute.snapshot.data);
  activatedRoute = activatedRoute.parent;
}

Это обновит переменную this.data всеми значениями из данных конфигураций маршрута.Вы можете изменить его в соответствии с вашими требованиями.

...