2016-04-15 245 views
0

考虑以下路径;Angular2中的动态路由解析

/items/:id 

这是指在特定项目的视图,然而,项目类型不是在运行时已知的,并且被用作一个多态组对象,例如;

  • /项目/ 1 - 项类型
  • /项目/ 2 - 物品类型B
  • /项目/ 3 - 项类型
  • 等...

每个项目可能有一组不同的子路由,具体取决于项目类型,路径结构不同;

/items/1/object_in_type_A/:objectId/foo 
/items/2/foo/different_path_in_B 

到目前为止,我已决定配置顶级路由器作为基本上是包装组件的非终止路由。当包装器组件加载时,它会从服务中为该项目请求一个模型,并根据该信息确定它是哪种类型的子对象。从那里,它找到适当的组件,使用DynamicComponentLoader来呈现它。一旦适当的组件加载,组件就会恢复路由。

但是,我有我怀疑这是否是正确的做法,并希望了解在运行时评估方案路由这样的概念,或者如果它甚至做出正确的做法。

+0

这不回答你的问题,但你应该看看[NGRX /路由器(https://github.com/ngrx/router),它的设计从下往上朝着这个目的 – drewmoore

+0

如果项目类型是不同的组件,然后每一个定义了自己的子路径 – Chandermani

+0

我想什么,我试图找出是否是一个路由/ URL可以分阶段进行评估。考虑第一个例子'/ items/1/objects/123/foo'。 有没有一种方法来评估'items/1',然后一旦实例化,传递下一个路径阶段,'objects/123/foo'? –

回答

0

在新的路由器(>= RC.3https://angular.io/docs/ts/latest/api/router/index/Router-interface.html#!#resetConfig-anchorresetConfig可用于

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