Дочерний маршрут всегда добавляет что-то к родительскому маршруту. Это означает, что если вы хотите сгруппировать SportComponent
и HorseRacingComponent
в SportModule
и , дочерние маршруты должны быть определены как /sport
и /horse-racing
(например, localhost: 4200 / horse-racing ) маршрут root должен быть пустым.
Решение
Таким образом, маршрут root в AppRoutingModule
будет:
const appRoutes: Routes = [
{ path: '', loadChildren: './sports/sport.module#SportModule' },
{ path: '**', component: PageNotFoundComponent }
];
, а дочерний маршрут в SportingRouteModule
:
const sportRoutes: Routes = [
{
path: '',
children: [
{ path: 'sport', component: SportComponent },
{ path: 'horse-racing', component: HorseRacingComponent }
]
},
];
Установите этот Stackblitz, чтобы увидеть, как он работает: https://stackblitz.com/edit/angular-yh5xep
Альтернатива
С другой стороны с другой стороны, вы можете настроить дочерние маршруты как /sport
и /sport/horse-racing
, где '/ sport' является дочерним маршрутом по умолчанию для SportComponent
. В этом случае маршруты root можно настроить следующим образом:
const appRoutes: Routes = [
{ path: 'home', component: HomeComponent },
{ path: 'sport', loadChildren: './sports/sport.module#SportModule' },
{ path: '', redirectTo: 'home', pathMatch: 'full' },
{ path: '**', component: PageNotFoundComponent }
];
И дочерний маршрут в SportRoutingModule
:
const sportRoutes: Routes = [
{
path: '',
children: [
{ path: '', component: SportComponent },
{ path: 'horse-racing', component: HorseRacingComponent }
]
},
];
Демонстрация альтернативного решения: https://stackblitz.com/edit/angular-rh8drh