2016-11-28 279 views
2

我有2個關於角2點路由器的路徑問題,我花了一些時間google搜索一下,但沒有運氣,反正我有以下的路線設置:角2路由器路徑

{ path: 'contract', component: ContractInsertUpdateComponent, children: [ 
     { path: '' }, 
     { path: ':id', component: ContractInsertUpdateComponent, children:[ 
        { path: 'buyers', component : ContractTabBuyerComponent }, 
        { path: 'seller', component : ContractTabSellerComponent } 
     ]}     
]} 

首先,讓我解釋一下我想在這裏實現的目標,我希望使用相同的組件來插入/更新合同。我也有更多的孩子路線和完整的URL看起來應該像

localhost:4200/contract/2/buyers

  1. 我很好奇的第一件事情就是合同的默認路由

    {路徑:「」}

如果我理解的話,如果路線是類似的

localhost:4200/contract

它應該加載ContractInsertUpdateComponent,它的atm,我的問題是:這是否正確的方式來做到這一點?如果可能的話,我也想避免使用空的組件作爲默認路由。

    此路徑設定目前不工作的
  1. 休息,例如,如果i型像

localhost:4200/contract/2

即時得到錯誤:無法匹配任何路由。 URL段:'contract/2'

在我的理解中,它應該加載ContractInsertUpdateComonent我錯了嗎?

我不知道在哪裏尋找幫助,我需要一個人指點我正確的方向......感謝您的幫助!

回答

2

`/合同/ 2場比賽這條路

{ path: '' }, 

因爲/contract/2開始與''(實際上每路線一樣) ,然後搜索這條路線的子路由,但因爲有沒有失敗。

{ path: '', pathMatch: 'full' }, 

應該修復它,因爲那樣的話,路由器不會搜索以''啓動路線,但僅適用於該航線是''

更新

{ path: 'contract', component: ContractInsertUpdateComponent, children: [ 
    { path: '', pathMatch:'full', /* I guess you want some `component: ...` or `redirectTo: ...` here }, 
    { path: ':id', children:[ 
     { path: '', pathMatch:'full' }, 
     { path: 'seller', component : ContractTabSellerComponent } 
    ]} 
]} 
+0

好了,謝謝,使用你的邏輯,我設法使它工作(種) - 我在兩條兒童路線上都加了'{path:'',pathMatch:'full'}',所以現在看起來像這樣: {{path:'contract',component:ContractInsertUpdateComponent,children:[ {path:'',pathMatch:'full'}, {path:':id',children:{path:'',pathMatch :'full'}, {path:'seller',component:ContractTabSellerComponent} ]} ]} 現在我有一個問題,因爲我的ContractInsertUpdateComponent param(id)值是NaN。任何想法? – Exerlol

+0

'id'只傳遞給'ContractTabSellerComponent'。您可以在那裏使用它或將其傳遞給父項。還有一種方法可以從父級參數中找到子路由,但似乎有點脆弱。 –

+0

另請參閱http://stackoverflow.com/questions/38956129/angular-2-new-router-how-to-get-router-parameters-of-a-child-component爲後面的方法 –