У меня ленивый модуль с некоторыми статическими и динамическими маршрутами.Вот мой ленивый модуль маршрутизации:
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()
, но это кажется невозможным при использовании lazyмодульные маршруты, потому что ленивый модуль router.config
не содержит дерева маршрутов).
Я ищу способ обновить маршруты ленивых модулей в другом месте, но не могу найти способ обновить ленивый модульмаршруты после запуска приложения.