Angular2 Routerlink:添加查询参数

tis*_*sie 51 angular2-routing angular

如何添加查询参数routerLink

@RouteConfig {
   {path: '/search',   name: 'Search', component: SearchCmp}
}  
Run Code Online (Sandbox Code Playgroud)

让我们说要前往/search?q=asdf,

<a [routerLink]= " [ '/Search' , {q= 'asdf'}] ">Link 1</a>
Run Code Online (Sandbox Code Playgroud)

这解决了/search.

有没有办法添加查询参数而不使用:

this.router.navigate( ['Search', { q: 'asdf'}]);
Run Code Online (Sandbox Code Playgroud)

要么

<a href="/search?a=asdf"> Link 2 </a>
Run Code Online (Sandbox Code Playgroud)

ple*_*ock 89

OP(原始海报)询问如何通过路由器链接添加查询参数,而不是像@SaUrAbH MaUrYa回答的路由器参数.

要添加查询参数,您需要使用[queryParams]绑定:

<a [routerLink]="['/users']" [queryParams]="{ page: 1 }">next page</a>
Run Code Online (Sandbox Code Playgroud)

  • 这正是我所寻找的.`[queryParams]`属性绑定在动态生成链接时很有用,例如在`*ngFor`循环中:```<li*ngFor ="让一个帐户"> <a [routerLink] ="['/ account ']"[queryParams] ="{id:a.Id}"> {{a.Name}} </a> </ li>```我无法将其与其他构造一起使用,如下所示SaUrAbH MaUrYa(除非我需要一个硬编码的查询字符串值) (2认同)
  • 这是查询参数的正确答案 (2认同)

SaU*_*rYa 82

如果你需要的东西/search?q=asdf比你可以简单地使用:

@RouteConfig {
   {path: '/search',   name: 'Search', component: SearchCmp}
}

//And to generate router Links use:

<a [routerLink]="['/Search']" [queryParams]="{q:'asdf'}"></a>
Run Code Online (Sandbox Code Playgroud)

这将生成href标记,<a href="/search"但单击锚标记将引导您进入URL /search?q=asdf.[queryParams]将允许您使用"?"添加查询参数,否则它们将被";"附加.您可以在SearchCmp使用中获取此参数:

constructor(private _routeParams: RouteParams) {
   var queryParam = this._routeParams.get('q');
}
Run Code Online (Sandbox Code Playgroud)

  • 这不符合原始问题.这样做:http://stackoverflow.com/a/39016381/1480995 (6认同)