我有一个组件,我需要在点击按钮时将数据传递给另一个组件,所以我在锚点中使用了[routerLink]
属性
<a [routerLink]="['/employeedetail' , name, address,
detail3 , detail4, detail5, detail6 , detail7, detail8 ,
detail9, detail10></a>
在app.route.ts中定义了相应的路线
{
path: 'employeedetail/:name/:address/:detail3 /:detail4
/:detail5 /:detail6/:detail7 /:detail8 /:detail9 /:detail10 ',
component : employeedetailComponent
}
在完美的世界中,它应该有效,但它并没有因为它出错而说
zone.js:355Unhandled Promise rejection:不支持的参数数量 对于纯函数:11;区域:;任务:Promise.then;值: 错误:纯函数的参数数量不受支持:11(...)错误: 纯函数的参数数量不受支持:11
我对此进行了研究,发现当内联模板中有10个元素时,angular2路由器出现故障,我通过删除URL(detail10)中的最后一个参数来尝试,没有错误。
问题是如何使用[routerlink]在url中传递这些大量的params,或者我应该使用不同的方法将数据从一个组件传递到另一个组件?
答案 0 :(得分:1)
您可以使用queryParams在网址中传递参数。
<a [routerLink]="['/employeedetail' , name, address]" [queryParams]="{detail3: detail3, detail4: detail4}">Somewhere</a>
使用查询参数对于可选参数更好,它使您的网址更具可读性。
答案 1 :(得分:0)
向准备路线的组件添加方法并传递结果,而不是在模板中构建
class MyComponent {
get employeeDetailLink() {
return ['/employeedetail' , name, address,
detail3 , detail4, detail5, detail6 , detail7, detail8 ,
detail9, detail10];
}
}
并像
一样使用它<a [routerLink]="employeeDetailLink"
最近删除了这个限制(不知道它是否已经发布)https://github.com/angular/angular/pull/12710