Как предоставить сгенерированные маршруты с использованием 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 },
....
Другие вопросы по тегам