【问题标题】:Angular2 routing, parent child -- route component vs view componentAngular2路由,父子——路由组件vs视图组件
【发布时间】:2016-09-04 06:10:16
【问题描述】:

我正在开发一个 Angular2 应用程序,目前我们处于 beta-17 版本,因为候选版本不再支持捆绑并破坏了一切(这是另一回事)。

据我所知,父子路由之间的关系应该是子路由要想有路由就必须是“路由组件”。这是有道理的,对 - 但是如果我想要一个父“路由组件”,它有一个子“视图组件”,它充当子“路由组件”的父级?

.
├── app.component // Has two child routes, both are "view components"
     ├── plan.component
     └── design.component // View component, route "/design/:id/..."
         ├── header.component
         ├── nav-and-body.component // Routing component
         └── footer.component

我有一个顶级应用程序,它有两条路线,/plan/:id/.../design/:id/... 路线。如您所见,我希望这些将作为其他“路由组件”的父级。想象一下,我们在“设计”路线中,我们尝试导航到 NavAndBodyComponent 中定义的子路线,它不起作用,也不会引发错误。

我相信这是因为我有一个父“路由组件”,它有一个子“视图组件”,它有一个嵌套的“路由组件”——如何在不改变这个层次结构的情况下解决这个问题?

视图组件按预期加载:

网址:localhost:5000/design/10

但是当我尝试导航到嵌套子路由时,URL 会更改为

网址:localhost:5000/model

我想要(并且期望):

网址:localhost:5000/design/10/model

更新

这里有一个很详细的Plunker

【问题讨论】:

  • 你能创建一个 Plunker。我发现很难理解你试图完成什么。如果我理解这个问题,那么我猜想有一个中间组件只有一条路径,路径为 /...useAsDefault: true<router-outlet> 应该做你想做的事。
  • @GünterZöchbauer 我似乎根本无法让 plunker 使用 beta.17 和路由。 angular2 beta.17 plunker 有什么好的起点吗?
  • 只需将链接发布到您拥有的 plunker。我会看看并尝试让它工作。
  • @GünterZöchbauer plnkr.co/edit/JK4HhQ?p=preview
  • plunker 正在工作。请检查这是否是您想要的plnkr.co/edit/LRQdTo?p=info

标签: angular angular2-routing


【解决方案1】:

问题是在根组件以外的组件上添加ROUTER_PROVIDERS引起的。

Plunker example

如何防止每次激活路由时添加动态添加的路由,请参阅Angular2: Configuration 'name' conflicts with existing route 'name'

【讨论】:

  • 现在useAsDefault 无法使用,我必须手动选择“型号”——我该如何解决?
  • 其实我也不知道。我自己没用过这么多。新路由器也不一样,所以我不想再花太多时间研究旧路由器了。 (新路由器还没有useAsDefault)。我不确定有没有办法让useAsDefault 使用动态配置的路由。也许您可以静态添加默认路由?
猜你喜欢
  • 2016-07-24
  • 2016-10-28
  • 2016-08-28
  • 1970-01-01
  • 2016-12-19
  • 1970-01-01
  • 1970-01-01
  • 2021-05-31
  • 1970-01-01
相关资源
最近更新 更多