我的app.routing.ts有以下路由设置,我的大多数组件都有延迟加载工具 . 我的应用程序包含两个主要部分,“访问者可以访问部分”和“登录用户可以访问部分” . 未登录时,AuthGuard将阻止用户,并且将阻止任何路由(例如帐户和管理员)并重新启动到家中

// app.routing.ts
const APP_ROUTE: Routes = [
{ path: '', redirectTo: 'home', pathMatch: 'full', },
{ path: '', component: UserLayoutComponent, children: [
    { path: 'account', loadChildren: 'app/account/account.module#AccountModule' },
    { path: 'admin', loadChildren: 'app/admin/admin.module#AdminModule' },
    ]
},
{ path: '', component: VisitorLayoutComponent, children: [
    { path: 'home', component: HomePageComponent },
    { path: 'login', loadChildren: 'app/login/login.module#LoginModule' },
    { path: 'privacy-policy', loadChildren: 'app/privacy-policy/privacy-policy.module#PrivacyPolicyModule' },
    { path: 'terms-and-condition', loadChildren: 'app/terms-and-condition/terms-and-condition.module#TermsAndConditionModule' },
    ]
}, 
{ path: '**', redirectTo: '/home'}
];


// account.routing.ts with guards
const ACOUNT_ROUTES: Routes = [
    { path: '', component: AccountComponent, canActivate: [AuthGuard] },
    { path: 'edit-defaults', component: AccountEditDefaultsComponent, canActivate: [AuthGuard] },
    { path: 'change-password', component: AccountChangePasswordComponent, canActivate: [AuthGuard] },
];

// admin.routing.ts with guards
const ADMIN_ROUTES: Routes = [
    { path: '', component: AdminComponent, canActivate: [AuthGuard, AdminGuard] },
    { path: 'users', component: AdminUsersComponent, canActivate: [AuthGuard, AdminGuard] },
];

延迟加载在这个阶段工作正常,因为除非用户登录,否则加载需要日志记录的组件的非 . 但是,我想通过延迟加载UserLayoutComponent进一步改进这一点,除非用户已登录,因为加载任何内容都没有意义在前面的组件里面 . 目前它是导入的,因此它不会延迟加载

我试图创建一个user-layout.module.ts和user-layout.routing.ts并将我的app.routing.ts更改为

// app.routing.ts
const APP_ROUTE: Routes = [
{ path: '', redirectTo: 'home', pathMatch: 'full', },
{ path: '', loadChildren: 'app/layout/user-layout/user-layout.module#UserLayoutModule', children: [
    { path: 'account', loadChildren: 'app/account/account.module#AccountModule' },
    { path: 'admin', loadChildren: 'app/admin/admin.module#AdminModule' },
    ]
},
{ path: '', component: VisitorLayoutComponent, children: [
    { path: 'home', component: HomePageComponent },
    { path: 'login', loadChildren: 'app/login/login.module#LoginModule' },
    { path: 'privacy-policy', loadChildren: 'app/privacy-policy/privacy-policy.module#PrivacyPolicyModule' },
    { path: 'terms-and-condition', loadChildren: 'app/terms-and-condition/terms-and-condition.module#TermsAndConditionModule' },
    ]
}, 
{ path: '**', redirectTo: '/home'}
];

我收到此错误表明这是错误的方法 .

children和loadChildren不能一起使用

如何为UserLautComponent.ts实现延迟加载

请注意,我的UserLayoutComponent包含导航栏,侧边菜单和一些初始加载,以便在登录后获取用户信息