8

I am experimenting the new router (version 3.0.0-alpha.7) and would like to know how to specify query parameters by routerLink directive?

The Router.navigate() method below generates a URL like http://localhost:3000/component-a?x=1

this.router.navigate(['/component-a'], {queryParams: {x: 1}});

However, I can't figure out how to do the same thing with the routerLink directive. Template like below returns parser error...

<a [routerLink]="['/component-a'], {queryParams: {x: 1}}">Component A</a>

And the closest thing I can get is http://localhost:3000/component-a;x=1, which uses the syntax for child route.

<a [routerLink]="['/component-a', {x:1}]">Component A</a>
Yuan Li
  • 205
  • 1
  • 3
  • 7

2 Answers2

16

You can do something like this

<a [routerLink]="['/component-a']" [queryParams]="{x: 1}">Component A</a>
Harry Ninh
  • 16,288
  • 5
  • 60
  • 54
-1

In the new router component, you can do it in this way:

Passing a parameter in the URL:

<a [routerLink]="['/component-a', 1]">Component A</a>

Passing e query parameter:

<a [routerLink]="['/component-a', { x: 1 }]">Crisis Center</a>
Bernardo Pacheco
  • 1,445
  • 1
  • 14
  • 23
  • 1
    Where is this documented? I don't see this in the [master branch](https://github.com/angular/angular/blob/master/modules/@angular/router/src/directives/router_link.ts). – Mark Rajcok Aug 07 '16 at 02:51
  • 1
    @Bernardo Pacheco how do you do this and pass it a variable for `x : 1`? Could you take a look at https://stackoverflow.com/q/46574652/1440240 – Ben Racicot Oct 04 '17 at 21:46