如何在bootstrap动态提供路由?

Dav*_*žić 5 angular2-routing

如何为RouterModule提供服务,以便根据某些参数动态注入路由?

请注意,此参数也是动态的(它来自bootstrapping之前的api调用).

我确实意识到通过使用RouterModule.forRoot(这是一个静态函数),我对注入服务非常有限.

Rub*_*ben 5

您需要为 ROUTES 令牌提供一个生成路由配置并采用该参数的函数。此外,您还需要提供该参数。

import {ROUTES} from '@angular/router/src/router_config_loader';
[...]
imports: [RouterModule.forRoot([])] // Empty on purpose
providers: [
  SomeParamForTheFunction,
  {provide: ROUTES, 
   multi: true, 
   useFactory: routesFunction, 
   deps: [SomeParamForTheFunction]},
]
Run Code Online (Sandbox Code Playgroud)

如何提供该参数取决于您。你可以使用另一个工厂。

更新:由于路由配置现在是动态的,因此您还必须提供一个entryComponents 属性,其中包含初始页面加载所需的所有组件。