2016-05-09 133 views
1

我正在研究Angular2應用程序,目前我們正在測試版本17中,因爲發佈候選版本不再支持捆綁並破壞所有內容(這是另一回事) 。Angular2路由,父子路由組件vs查看組件

我知道父子路線之間的關係預計是孩子必須是「路由組件」,如果它想擁有路由。這是有道理的,對 - 但如果我想擁有一個父「路由組件」,它有一個子節點「視圖組件」,它充當孩子「路由組件」的父節點?

. 
├── 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

我想(和預期):

URL:localhost:5000/design/10/model

更新

這是一個非常詳細的Plunker

+1

你可以創建一個Plunker。我覺得很難理解你想要完成什麼。如果我理解了這個問題,那麼我猜想只有一個路徑爲'/ ...'和'useAsDefault:true'的路由器和一個''應該做你想做的事情。 –

+0

@GünterZöchbauer我似乎無法通過beta.17和路由獲得工作。 angular2 beta.17 plunker有什麼好的起點? –

+0

只需發佈鏈接到你有。我會看看並嘗試使其工作。 –

回答

1

此問題是由於在根組件以外的組件上添加ROUTER_PROVIDERS引起的。

Plunker example

如何防止各路線被激活時將動態添加的路由看到Angular2: Configuration 'name' conflicts with existing route 'name'

+0

現在'useAsDefault'沒有兌現,我不得不手動選擇「模型」 - 我該如何解決這個問題? –

+0

其實我不知道。我自己並沒有用過這麼多。這在新的路由器中也不同,因此我不想花太多時間在舊路由器上進行調查。 (新路由器還沒有'useAsDefault')。我不確定有什麼方法可以使'useAsDefault'與動態配置的路由一起工作。也許你可以靜態添加默認路由? –

相關問題