How to keep query parameters in angular 5 on all routes by default?

angular typescript angular-routing

3887 观看


905 作者的声誉


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

and call a link with [routerLink]="['/login']" I have to get this url:

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?

作者: geronimo678 的来源 发布者: 2017 年 12 月 27 日

回应 1


57950 作者的声誉

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.

作者: Max Koretskyi aka Wizard 发布者: 2017 年 12 月 27 日