I wrote an Angular2 (v2.0.1) application that makes use of the router. The website is loaded with several query string parameters, so the full URL initially looks like this:
https://my.application.com/?param1=val1¶m2=val2¶m3=val3
In my route configuration, I have an entry which redirects an empty route:
const appRoutes: Routes = [ { path: '', redirectTo: '/comp1', pathMatch: 'full' }, { path: 'comp1', component: FirstComponent }, { path: 'comp2', component: SecondComponent } ];
My problem is, that after the app has been bootstrapped, the URL does not contain the query parameters anymore, instead it looks like this:
https://my.application.com/comp1
Is there any way I can configure the router so that it keeps the initial query string when navigating?
Thank you
Lukas
To send query parameters in a POST request in JavaScript, we need to pass a body property to the configuration object of the Fetch API that matches the data type of the "Content-Type" header. The body will always need to match the "Content-type" header.
import ActivatedRoute from '@angular/router'. Inject ActivatedRoute class in constructor. Access queryParams property of ActivatedRoute class which returns an observable of the query parameters that are available in the current URL route.
Query parameters are a defined set of parameters attached to the end of a url. They are extensions of the URL that are used to help define specific content or actions based on the data being passed. To append query params to the end of a URL, a '? ' Is added followed immediately by a query parameter.
I don't think there is a way to define that in the routes configuration.
Currently it is supported for routerLink
s and imperative navigation to enable
You can add a guard to the empty path route, where in the guard navigation to the /comp1
route is done.
router.navigate(['/comp1'], { preserveQueryParams: true }); //deprecated. see update note
router.navigate(['/comp1'], { queryParamsHandling: "merge" });
There is a PR to allow to configure preserveQueryParams
globally.
Update note: from https://angular.io/api/router/NavigationExtras, preserveQueryParams is deprecated, use queryParamsHandling instead
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With