app.module.ts
我的 Angular 4 应用程序使用延迟加载 ( )在文件中设置了父路由loadChildren
。有些路由需要身份验证(使用canActivate
),有些则不需要:
// app.module.ts
const routes: Routes = [
// Paths that require authentication
{
path: '',
children: [
{ path: 'admin', loadChildren: './admin/admin.module#AdminModule' },
{ path: 'customer-locator', loadChildren: './customer-locator/customer-locator.module#CustomerLocatorModule' }
],
canActivate: [AuthGuard]
},
// Paths that do not require authentication
{
path: 'login',
component: LoginComponent
}
];
子路由设置在每个相应的模块内。例如,对于 中的子路由CustomerLocatorModule
,它们已被放置在customer-locator.module.ts
:
// customer-locator.module.ts
const routes: Routes = [
{ // REQUIRES AUTHENTICATION
path: '',
component: CustomerLocatorComponent
},
{ // SHOULD NOT REQUIRE AUTHENTICATION
path: 'edit-customer/:customerId',
component: EditCustomerComponent
}
]
正如当前设置的那样,所有子路由path: ''
都需要进行身份验证才能访问。
EditCustomerComponent
鉴于其父路由 ( ) 确实需要身份验证,子路由(在这种情况下,指向 的路由)是否可能customer-locator
不需要身份验证?