如何通过routerLink传递查询参数


161

我想传递一个查询参数prop=xxx

这没用

<a [routerLink]="['/somepath', {queryParams: {prop: 'xxx'}}]>Somewhere</a>

您要使用的语法是用于矩阵参数的形式<a [routerLink]="['/somepath', { foo: 'foo' }]">Somewhere</a>,这是一种形式,它为您提供矩阵url参数(分号;而不是?和&分隔符),您可以通过ActivatedRoute.params而不是ActivateRoute.queryParams访问此语法stackoverflow.com/questions/35688084/... 这里stackoverflow.com/questions/2048121/...
威廉·阿迪拉

1
查询参数和矩阵参数相同。唯一的区别是,当它们添加到根段时,它们被序列化为查询参数,当它们添加到子段时,它们被序列化为矩阵参数。
君特Zöchbauer

还有更多区别检查此web.archive.org/web/20130126100355/http://brettdargan.com/blog/…您也可以在以下文档中查看角度文档中的链接参数语法:angular.io/docs/ts/latest/导游/…
威廉·阿迪拉

Answers:


325

queryParams

queryParamsrouterLink他们可以通过的另一个输入

<a [routerLink]="['../']" [queryParams]="{prop: 'xxx'}">Somewhere</a>

fragment

<a [routerLink]="['../']" [queryParams]="{prop: 'xxx'}" [fragment]="yyy">Somewhere</a>

routerLinkActiveOptions

要同时获得在父路由上设置的路由活动类,请执行以下操作:

[routerLinkActiveOptions]="{ exact: false }"

传递查询参数以this.router.navigate(...)使用

let navigationExtras: NavigationExtras = {
  queryParams: { 'session_id': sessionId },
  fragment: 'anchor'
};

// Navigate to the login page with extras
this.router.navigate(['/login'], navigationExtras);

另请参阅https://angular.io/guide/router#query-parameters-and-fragments


这将如何以编程方式进行?我尝试过this.router.navigate(['/ resetPassword',{queryParams:{用户名:loginName}}])); 但是结果是:localhost:8100 / resetPassword; queryParams =%5Bobject%20Object%5D
rickul

2
我更新了答案。另请参阅我添加的链接。它显示了一个完整的示例。
君特Zöchbauer

夫妇笔记:rickul的代码应该是[ '/resetPassword' ], { queryParams: { username: loginName }})其中]涉及的演员之前。同样不要忘记查询参数区分大小写。
Simon_Weaver

2
不要忘记订阅目标上的queryParams:stackoverflow.com/a/39146396/2726844
Vince I

1
或者,如果你正在使用的路线,runGuardsAndResolvers: 'always'将刷新路线 medium.com/engineering-on-the-incline/...
亚当
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.