首页 > 解决方案 > 向惰性模块添加动态路由

问题描述

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

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不包含路由树)。

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

标签: angularmodulelazy-loading

解决方案


推荐阅读