2017-01-01 64 views
0

我是這個活動的路線:如何創建多個參數與routeLink

companies/:id/departments 

現在我想創建這條路線了一個新部門:

companies/:id/departments/create 

我的HTML這條路改變通過routeLink是這樣的:

<button [routerLink]="['companies', id, 'departments','create']">create</button> 

當我點擊routerLink我收到此錯誤信息:

Error: Cannot match any routes: 'companies/1/departments/companies/1/departments/create' 

很明顯,我的routerLink路由被附加到活動路由。

我應該如何重寫我的routerLink才能使其工作?

路由器是否假定創建路由是子路由?不是這樣!

回答

1

什麼將其更改爲:

<button [routerLink]="['create']">create</button> 
+0

爲什麼這項工作?當我查看文檔時,僅僅是這樣的(從AArias評論中獲得的):「...或者不以斜線開始,路由器將代替在當前激活的路線的子節點中......」但是我無法在'創建'和當前激活路徑的子節點之間建立連接,因爲在我的情況下不存在子路由。 – Pascal

+0

我不明白,是否有效? –

+1

是的,但它... AArias的作品。我不喜歡API提供多種方式,這會導致代碼或開發人員遲早會出錯。看來AArias的做法是絕對的網址,你的方法是相對的網址方式。 – Pascal

1

按照documentation

如果第一段與/開始,路由器將查找路線 從應用程序的根。

如果第一個分段以./開頭,或者 不以斜槓開頭,則路由器將在當前激活的路由的子項中查找 。

如果第一段 以../開頭,則路由器將上升一級。

因此,基本上,所有你需要做的是第一段前添加一個斜槓:

<button [routerLink]="['/companies', id, 'departments','create']">create</button> 
+0

你的工作也是如此,但時間更長,但你稍後;-)所以我upvote它! – Pascal