The user calls the app's url with the parameters and uses my app. While switching between different routes the url parameters should be kept visible in the browser's address bar.
I have to keep the query parameters on each route of my app. That means if I have the url
www.example.com/app/test?id=326748798342&state=1
and call a link with [routerLink]="['/login']"
I have to get this url:
www.example.com/app/login?id=326748798342&state=1
.
On default I get the login route without the parameters. I found one solution that says to set queryParamsHandling='merge'
. But this is a very bad solution because that would mean to change all links in templates and all navigate() calls.
Is there a cleaner way to solve this problem on default? Something such setting queryParamsHandling in the routes array for the app or something else?
Currently there is no way to set it globally. Using queryParamsHandling
seems to be the only option:
<a [routerLink]="['/login']" queryParamsHandling="preserve"></a>
Or when using router:
router.navigate('/login', { queryParamsHandling: "preserve" })
The other possible option for queryParamsHandling
is merge
.