Как предоставить сгенерированные маршруты с использованием ROUTES InjectionToken в приложении Angular без модулей?
Я перехожу на автономные компоненты и, как они предлагают преобразовать маршруты в это:
// In the main application:
export const ROUTES: Route[] = [
{path: 'admin', loadChildren: () => import('./admin/routes')},
// ...
];
// In admin/routes.ts:
export default [
{path: 'home', component: AdminHomeComponent},
{path: 'users', component: AdminUsersComponent},
// ...
] as Route[];
Но в моем текущем модуле RoutingModule я динамически предоставляю маршруты, используяROUTES InjectionToken
.
providers: [
{
provide: ROUTES,
useFactory: (gfConfigService: GfConfigService): Routes => gfConfigService.createRoutes(),
deps: [GfConfigService],
multi: true,
},
],
Контекст: Таким образом, маршруты на самом деле не являются динамическими, но создание маршрутов зависит от некоторых данных, которые хранятся вGfConfigService
.
Любая идея, как избавиться от этого RoutingModule, сохраняя при этомautomatic generated routes
и все равно загружайте ихlazy
когда роутер попал например/admin
?
1 ответ
это мой рабочий пример
export function routeHandler(auth: Auth) {
const user = auth.currentUser;
let routes: Routes = []
if (!auth.currentUser) {
routes = [{
path: '',
loadComponent: () => import('./mt-auth/mt-auth.component').then(x => x.MtAuthComponent)
}]
}
routes.push({ path: '**', redirectTo: '' })
return routes;
}
....
provideRouter([]),
{ provide: ROUTES, useFactory: routeHandler, deps: [Auth], multi: true },
....