根据用户角色预加载角度模块

时间:2017-11-08 17:46:05

标签: angular rxjs

我正在玩我的角度应用程序的自定义预加载策略。到目前为止,我可以根据我通过路线传递的真/假值来预加载模块。

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?

0 个答案:

没有答案