Итак, я создаю приложение Angular 4, в котором я хочу, чтобы все маршруты были защищены (конечно, за исключением маршрута входа). Я пытаюсь использовать функциональные модули и маршрутизацию функциональных модулей. Итак, представьте что-то вроде этого:
import { NgModule } from '@angular/core';
import { RouterModule, Routes } from '@angular/router';
import { AuthGuardService } from './auth/auth-guard.service';
import { LoginComponent } from './login/login.component';
import { RegisterComponent } from './register/register.component';
import { ProtectedRouteComponent } from './protected-route/protected-route.component';
const routes: Routes = [
{ path: 'login', component: LoginComponent }, // no auth guard for login
{
path: '',
canActivate: [AuthGuardService],
children: [
{
path: '',
children: [
{ path: 'register', component: RegisterComponent },
{ path: 'protected', component: ProtectedRouteComponent }
]
}
]
}
];
@NgModule({
imports: [ RouterModule.forRoot(routes) ],
exports: [ RouterModule ]
})
export class AppRoutingModule {}
, для корневого модуля, а затем конфигурацию маршрутизации пользовательского функционального модуля, например:
import { NgModule } from '@angular/core';
import { RouterModule, Routes } from '@angular/router';
import { UsersComponent } from './users.component';
const routes: Routes = [
{ path: 'users', component: UsersComponent }
];
@NgModule({
imports: [RouterModule.forChild(routes)],
exports: [RouterModule]
})
export class UsersRoutingModule {}
Что было бы лучшим способом:
- Продолжайте использовать маршрутизацию функциональных модулей и
- Применить защиту маршрута к маршрутизации функционального модуля пользователя без репликации защиты canActivate? Можно ли каким-либо образом передать его в маршрутизацию пользовательского функционального модуля из корневого модуля маршрутизации?
Спасибо,
Ираклис