Angular Router: получить конфигурацию маршрута, которая соответствует текущему маршруту - PullRequest
0 голосов
/ 19 марта 2019

У меня есть следующая конфигурация маршрута в моем проекте Angular:

export const routes: Routes = [
  { path: 'a/:id', loadChildren: './a/a.module#AModule', data: {a: a}},
  { path: 'b/:id',  loadChildren: './b/b.module#BModule', data: {a: b}}
];

Теперь я могу получить свою конфигурацию маршрута следующим образом:

this.router.config //outputs the above array

this.router.url показывает a, но как правильно определить правильный Route, поскольку в конфигурации есть неразрешенный путь, а маршрутизатор содержит разрешенный путь.

Причина, по которой я хочу это сделать, - получить доступ к data в app.component где my router-outlet находится, а не в самом компоненте (документация на угловое состояние гласит, что объект data доступен только для самого компонента маршрута.

Ответы [ 3 ]

0 голосов
/ 19 марта 2019

Я бы решил эту проблему, разделив ленивый маршрут загрузки, сделав его проще. Корневая маршрутизация:

export const routes: Routes = [
  { path: 'a', loadChildren: './a/a.module#AModule'},
  { path: 'b',  loadChildren: './b/b.module#BModule'}
];

Маршрутизация модуля A:

export const aModuleRoutes: Routes = [
             { path: 'item/:id', component: YourComponent, data: {a: a}}  
]; 

Маршрутизация модуля B:

export const bModuleRoutes: Routes = [
             { path: 'item/:id', component: YourComponent, data: {a: b}}  
];

Здесь у вас есть индивидуальный маршрут для каждого модуля, и вы можете играть с отдельным модулем маршрута. Счастливое кодирование

0 голосов
/ 20 марта 2019

Я решил, используя этот код:

this.router.events.subscribe(event => {
    if (event instanceof RoutesRecognized) {
        console.log(event.state.root.firstChild.data['a']);
     }
});
0 голосов
/ 19 марта 2019

вы можете использовать активировать выход маршрутизатора-розетки внутри компонента приложения

<router-outlet (activate)="onActivate($event)"></router-outlet>

это дает вам загруженный компонент

в вашем app.component.ts

onActivate(event : any) {
   console.log(event);
}

пример: enter image description here

...