3

I have an Angular 2 test app running the latest alpha (37). There are just three routes, that look like this:

@RouteConfig([
  { path: '/', component: Home, as: 'home' },
  { path: '/errors', component: Errors, as: 'errors' },
  { path: '/about', component: About, as: 'about' }
])

I can access the routes, and when I place query string params in the URL I can read them just fine. However, a few instants after I read the parameters, I noticed that the route loads fine and the URL refreshes, removing the query string parameters.

In other words, accessing this route:

http://localhost:5555/errors?test=abc

Loads the /errors route, but right after the application loads the URL turns into:

http://localhost:5555/errors

That would be confusing to a user. I would like to keep the query string parameters in the URL.

I know, it's in alpha, but is this a bug or I forgot to set something up on the router? How can I keep whatever query string parameters in the URL?

Thanks!

3 Answers 3

1

This is fixed in Alpha 41. The query string is now persisted.

Sign up to request clarification or add additional context in comments.

3 Comments

I got exactly the same problem in Angular 2.0.0 beta 12
@aokaddaoc Can't reproduce in beta 15. This was the original issue github.com/angular/angular/issues/4413. Feel free to comment there or open another issue.
Reproduced on Angular 4.3.1, 4.4.6 and 5.0.4: stackoverflow.com/questions/47598762/…
1

Updating for Angular 2:
To preserve query parameters present in the current url, add

// import NavigationExtras 
import  { NavigationExtras } from '@angular/router';

// Set our navigation extras object
// that contains our global query params

let navigationExtras: NavigationExtras = {
      preserveQueryParams: true
    };   

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

For more info, check here:

1 Comment

This won't work for direct linking from outside of the site though.
0

Try this this.router.navigate(['target'], {preserveQueryParams: true});

Comments

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.