我有一个模块' DevicePreview'有一些路线,可以从根和另一个模块内部显示'内容'。
从根调用时,DevicePreview的路径/ a,/ b和/ c可用,当从Content调用时,它具有/ a,/ b和/ z。
现在我正在导出2个这样的路线数组(名称是假的):
export const DEVICE_ROOT_ROUTES: Routes = [
{
path: 'a',
component: DeviceAComponent
}, {
path: 'b',
component: DeviceBComponent
}, {
path: 'c',
component: DeviceCComponent
}
];
export const DEVICE_CONTENT_ROUTES: Routes = [
{
path: 'a',
component: DeviceAComponent
}, {
path: 'b',
component: DeviceBComponent
}, {
path: 'z',
component: DeviceZComponent
}
];
现在我想把它移到延迟加载的模块。 AFAIK到懒惰加载模块我必须这样做:
{
path: 'device',
loadChildren: 'app/+device/device.module#DeviceModule'
}
因为我不想在根目录中启用Z而在组件中启用C并且既不生成2个不同的模块,而是考虑在通过.forChild(选项)加载时配置DeviceModule
如何在延迟加载时调用forChild?我也可以考虑其他方法。
谢谢!
答案 0 :(得分:0)
我不确定我是否遵循了您想要完成的任务但是,您听说过AuthGuard吗?例如,您可以使用canActivate验证是否可以访问路由。
例如:
{
path: 'device',
loadChildren: 'app/+device/device.module#DeviceModule',
canActivate: [AuthGuard]
},
然后:
@Injectable()
export class AuthGuard implements CanActivate {
constructor() {}
canActivate(route: ActivatedRouteSnapshot, state: RouterStateSnapshot)
{
//Your logic here to check if for example the module trying
//to access the route is actually allowed to do that
}
}