考虑以下路径;
/items/:id
这表示特定项目的视图,但是,项目类型在运行时是未知的,并且作为多态对象集合提供,例如;
每个项目可能有一组不同的子路由,具体取决于项目类型,路径结构不同;
/items/1/object_in_type_A/:objectId/foo
/items/2/foo/different_path_in_B
到目前为止,我已经决定将顶级路由器配置为基本上是包装器组件的非终止路由。当包装器组件加载时,它从服务请求项目的模型,并从该信息确定它是什么类型的子对象。从那里,它找到适当的组件,使用DynamicComponentLoader
呈现它。一旦加载了适当的组件,组件就会恢复路由。
但是,我怀疑这是否是正确的方法,并希望在这样的运行时评估方案中理解路由的概念,或者它是否是正确的方法。
答案 0 :(得分:0)
在新路由器中>= RC.3
)https://angular.io/docs/ts/latest/api/router/index/Router-interface.html#!#resetConfig-anchor resetConfig
可以使用
router.resetConfig([ { path: 'team/:id', component: TeamCmp, children: [ { path: 'simple', component: SimpleCmp }, { path: 'user/:name', component: UserCmp } ] } ]);
这样,您可以随时从服务器加载更多数据并重新配置路由器。
据我所知,延迟加载组件仍在进行中。
https://github.com/angular/angular/issues/11437#issuecomment-245995186提供 RC.6 Plunker