【发布时间】:2019-03-28 11:18:35
【问题描述】:
我有一个使用急切加载的完整 Angular 应用程序。 我想将其转换为延迟加载,但是因为我对所有路线都有保护,并且所有路线都是通往受保护的主要路线的子路线,所以我不知道是否可以这样做并且仍然使它起作用就像急切加载一样。
这是我在 app-routing.module 中的路由数组:
// Routing array - set routes to each html page
const appRoutes: Routes = [
{ path: 'login/:id', canActivate: [AuthGuard], children: [] },
{ path: '', canActivateChild: [AuthGuard], children: [
{ path: '', redirectTo: '/courses', pathMatch: 'full' },
{ path: 'courses', component: CourseListComponent, pathMatch: 'full'},
{ path: 'courses/:courseId', component: CourseDetailComponent, pathMatch: 'full' },
{ path: 'courses/:courseId/unit/:unitId', component: CoursePlayComponent,
children: [
{ path: '', component: CourseListComponent },
{ path: 'lesson/:lessonId', component: CourseLessonComponent, data:{ type: 'lesson'} },
{ path: 'quiz/:quizId', component: CourseQuizComponent, data: {type: 'quiz'} }
]}
]},
{ path: 'welcome', component: LandingPageComponent, pathMatch: 'full' },
{ path: '**', component: PageNotFoundComponent, pathMatch: 'full' }];
我想知道是否可以通过延迟加载来实现这一点,如果可以的话,我想知道主要思想或为此我需要知道什么。
在我做的所有教程中,我从未遇到过这种事情。 非常感谢
【问题讨论】:
-
需要看
canLoad的守卫方法。然后例如,如果您打算将所有courses作为延迟加载模块移动。然后为courses模块创建一个路由配置,并有一个单独的守卫来管理它的子路径 -
我需要把canLoad放在哪里?在应用程序路由模块上?或在课程模块中?如果你能解释一下我会很感激,我对这个延迟加载有点新
-
如果你知道我可以从哪里得到一个我可以学习的例子,我会很棒
-
我尝试转换为延迟加载,但在构建时遇到了很多错误。我更新了问题并添加了错误和我所做的更改。
标签: angular routing lazy-loading eager-loading angular-router-guards