В настоящее время мы создаем приложение для администрирования с использованием Angular 6. Мы только начали, но хотим на раннем этапе применять методы лучших команд и хотим использовать оптимальную структуру и модульность, которые подходят нам лучше всего. Для этого мы решили обработать маршруты для каждого модуля (не хочу иметь раздутый отдельный файл) с использованием RouterModule.forRoot
и RouterModule.forChild
.
Будучи администрацией, мы хотим, чтобы все приложение было защищено (используя Guard). Однако мы сталкиваемся с проблемой, касающейся родительского маршрута и дочерних элементов, когда речь идет о модульности маршрутов.
Допустим, у нас есть основной AppRoutingModule
, который содержит следующее:
const appRoutes: Routes = [
{
path: '',
component: LayoutComponent,
canActivate: [AuthGuard],
children: []
},
{ path: 'oauth/callback', component: AuthComponent }
];
@NgModule({
declarations: [
AuthComponent
],
exports: [
RouterModule
],
imports: [
RouterModule.forRoot(appRoutes)
]
})
export class AppRoutingModule {}
Теперь, скажем, у нас есть другой модуль, UsersRoutingModule
, который содержит:
const usersRoutes: Routes = [
{
path: '/users',
component: UsersComponent
}
];
@NgModule({
exports: [
RouterModule
],
imports: [
RouterModule.forChild(usersRoutes)
]
})
export class UsersRoutingModule {}
Как мы можем определить маршруты в модулях, такие как приведенные выше, эквивалентны этому:
[
{
path: '',
component: LayoutComponent,
canActivate: [AuthGuard],
children: [
{ path: 'users', component: UsersComponent }
]
},
{ path: 'oauth/callback', component: AuthComponent }
]