2017-08-24 53 views
0

我有兩個路線:保持角2路由器從誤字面爲PARAMS

{ 
path: 'application/:groupId/:approved/:applicant-id', 
component: FooComponent 
}, 
{ 
path: 'application/:groupId/applicant-detail/:applicant-id', 
component: BarComponent 
}, 

所不同的是在第一個:approved是PARAM並且在第二applicant-detail是文字。當然,路由器認爲:

this.router.navigate(['./applicant-detail/' + this.someId, { relativeTo: this.route });

想要去的第一條路線,因爲它沒有意識到,applicant-detail是文字。除了重寫路線以外,還有什麼方法可以解決這個問題,所以它們在'簽名'中不匹配?

回答

3

交換位置,使參數之一,接下來,一切都將工作

{ 
path: 'application/:groupId/applicant-detail/:applicant-id', 
component: BarComponent 
}, 
{ 
path: 'application/:groupId/:approved/:applicant-id', 
component: FooComponent 
} 
+0

好的,謝謝,我現在就試試。你能解釋爲什麼更詳細一點嗎? – VSO

+0

它嘗試從上到下搜索,並使用「應用程序細節」作爲參數值,並使用第一條路線而不是進一步。 –

1

你的路由器的配置問題的順序。

交換你的聲明,使你的大多數文字路徑是第一個。

+0

你能詳細說明爲什麼請嗎?或者也許鏈接在文檔中。 – VSO

+1

它您註冊的路徑存儲在它們的順序依次確定。路由器把客戶端定義的路徑(請求),並順序地確實與你的註冊的路徑進行比較。它發現的第一個匹配是路由器返回的內容;在這種情況下,你的組件。 見文檔:https://angular.io/guide/router#example-config '在配置事項路線的順序,這是由設計...' –