实施预载策略-
...
const routes: Routes = [
{
path: 'welcome',
component: 'WelcomeComponent'
},
{
path: 'home',
canActivate: [AuthGuard],
data: { preload: true },
loadChildren: '@app/post-login/post-login.module#PostLoginModule'
},
{ path: '', redirectTo: '/welcome', pathMatch: 'full' },
{ path: '**', component: PageNotFoundComponent }
];
...
...
RouterModule.forRoot(routes, { preloadingStrategy: SelectiveStrategy })
...
在上面的代码中,我们正在/ home路径上延迟加载PostLoginModule。另外,我们正在实施自定义预加载策略。 (类似于角度指南中的那个。)
选择性策略的实施-
...
@Injectable()
export class SelectiveStrategy implements PreloadingStrategy {
preload(route: Route, load: Function): Observable<any> {
if (route.data && route.data['preload']) {
return load();
}
return of(null);
}
}
在SelectiveStrategy中,我们检查route.data.preload
。如果将其设置为true,则我们调用load()
。否则返回of(null)
。
在上述实现中,是否在初始页面加载中加载了PostLoginModule?还是在初始页面在后台异步加载后的某个时间加载?
对此,角向导不是很清楚。我看到很少的博客说它将在初始页面加载后在后台异步加载。但是在角度文档中是否有提及?