I'm trying to figure out how to use the Angular2 router navigation (router 3.0.0-alpha.7) with query parameters.
I can easily navigate to a route with a queryParam with this line:
this._router.navigate(['/login'], {queryParams: {redirect: 'route1'}});
In the '/login' component, I do some login which will redirect to the redirect
route, namely route1 here. However, after the redirection, the redirect
query parameters stays in the URL, i.e. I'm now at page /route1?redirect=route1
. I want to remove the redirect parameter here.
Moreover, if I then navigate to another page with the same redirect
queryParam, it doesn't overwrite the previous one, but adds another ?redirect=...
in the url. Namely:
this._router.navigate(['/another-route'], {queryParams: {redirect:'route2'}});
leads me to /another-route?redirect=route2?redirect=route1
Is it possible to clear the queryParams when navigating between routes?
I tried this._router.navigate(['/route1'], {queryParams: {redirect: null}});
, or {queryParams: null}
etc but no success.
I struggled with this as well. You would expect the router to clear query params by default when navigating to another route...
You can do either
this._router.navigate(['/route1'], {queryParams: {}});
or
this._router.navigateByUrl('/route1');
or when using routerLink
:
<a [routerLink]="['/applications']" [queryParams]="{}"> Applications</a>