将动态路由添加到惰性模块

时间:2018-12-05 13:45:23

标签: angular module lazy-loading

我有一个带有一些静态和动态路由的惰性模块。 这是我的惰性模块路由:

const routes: Routes = [
    RouteGeneratorHelper.generateRoutes(UserModel),
    RouteGeneratorHelper.generateRoutes(HeroesModel),
    {
        path: '',
        redirectTo: 'home',
        pathMatch: 'full',
    },
    {
        path: '',
        redirectTo: 'home',
        pathMatch: 'full',
    },
    {
        path: 'home',
        component: HomePageComponent
    },
    {
        path: '404',
        component: NotFoundPageComponent
    },
    {
        path: '**',
        redirectTo: '404'
    }
];

@NgModule({
    imports: [
        RouterModule.forChild(routes)
    ],
    exports: [
        RouterModule
    ]
})
export class MyLazyRoutingModule { }

RouteGeneratorHelper.generateRoutes(UserModel)返回从给定模型动态生成的Route对象。

在JIT中它就像一个魅力,但在AOT中却不起作用,因为angular不允许在装饰器中使用函数。

一种解决方法是在NgModule装饰器之外调用路由生成。这意味着加载模块时,我必须在某处调用RouteGeneratorHelper.generateRoutes方法。

但是,现在的问题是,无法更改惰性模块路由配置(您可以通过更改router.config并调用router.resetConfig()来更新非惰性模块路由,但是似乎无法使用延迟模块路由,因为延迟模块router.config不包含路由树)。

我正在寻找在其他地方更新我的惰性模块路由的方法,但是一旦应用程序运行,我就找不到一种方法来更新惰性模块路由。

0 个答案:

没有答案