我正在玩我的角度应用程序的自定义预加载策略。到目前为止,我可以根据我通过路线传递的真/假值来预加载模块。
router.module.ts
...
const appRoutes: Routes = [
{
path: '',
component: AppWrapperComponent,
children: [
{
path: 'path1',
loadChildren: './routes/path-one/path-one.module#PathOneModule',
data: { preload: false }
},
{
path: 'path2',
loadChildren: './routes/path-two/path-two.module#PathTwoModule',
data: { preload: true }
}
];
...
自定义-预压strategy.ts
import { Observable } from 'rxjs/Observable';
import { PreloadingStrategy, Route } from '@angular/router';
export class PreloadSelectedModulesList implements PreloadingStrategy {
preload(route: Route, preload: Function): Observable<any> {
if (route.data && route.data.preload) {
return preload();
} else {
return Observable.of(null);
}
}
}
我最终希望通过基于用户角色预加载模块来进一步优化它。问题是预加载策略在用户点击登录页面时运行,并且由于用户尚未登录,我无法根据该用户的角色进行预加载。是否有任何方法可以推迟所有预加载,直到用户登录,然后根据该信息检查角色和预加载服务?也许有一种方法可以使用Rxjs?