EXCEPTION:根段不能有矩阵参数

时间:2016-10-17 14:48:10

标签: angular

HTML

[routerLink]="['', {'scrollTo': '#contact'}]"

TS:

this.route.params.forEach((params: Params) => {
    if (params['scrollTo']) {
        // some code here
    }
});

错误:EXCEPTION:根段不能有矩阵参数

我的routerLink中不能有'scrollTo'参数吗?

它明显出现在角度2文档中:https://angular.io/docs/ts/latest/guide/router.html#!#appendix-link-parameters-array

修改

似乎没有抱怨:<a [routerLink]="['/crisis-center', { scrollTo: '#contact' }]">Crisis Center</a>。但我需要用我的“根路线”。

3 个答案:

答案 0 :(得分:7)

最近,它在Angular 5 +中以这种方式完成:

<a [routerLink]="['/']" [queryParams]="{ 'tour': true }"> text </a>

执行[routerLink]="['/', { 'tour': true' }]"> text </a>会抛出错误

答案 1 :(得分:2)

根段不能有矩阵参数。这有两个原因:

  • 网址中没有地方可以放置它们。
  • 目前我们在参数更改时重用组件,但将来我们会这样做 提供一种定制重用行为的方法。所以开发人员会 能够在其args改变时获得组件的新副本。 由于根组件是静态创建的,我们无法实现 它是根组件。

答案 2 :(得分:2)

接受的答案是错误的,它设置了查询参数(例如?myparam = true)。要设置矩阵参数(例如; myparam = 15; foo = foo),语法为:

[routerLink]="['.', {'scrollTo': '#contact'}]"

注意路线中的时间段。如此处所述:

https://github.com/angular/angular/issues/9505

这是设置矩阵参数的方法,但以“''”失败,因为这是针对根路由的,显然这是不允许的矩阵参数-