2017-01-01 82 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