背景:
用户使用参数调用应用程序的url并使用我的应用程序。在不同路由之间切换时,URL参数应在浏览器的地址栏中保持可见。
我必须在我的应用程序的每个路由上保留查询参数。也就是说如果我有网址www.example.com/app/test?id=326748798342&state=1
调用[routerLink]="['/login']"
链接,我必须获得以下网址:www.example.com/app/login?id=326748798342&state=1
默认情况下,我得到没有参数的登录路径。我找到了一个解决方案,说要设置queryParamsHandling='merge'
。但这是一个非常糟糕的解决方案,因为这意味着要更改模板中的所有链接和所有的navigate()调用。
有没有更干净的方法来解决这个默认问题?在应用程序的路由数组中设置queryparamshandle之类的设置还是其他什么?
最佳答案
目前还没有办法在全球范围内进行设置。使用queryParamsHandling
似乎是唯一的选择:
<a [routerLink]="['/login']" queryParamsHandling="preserve"></a>
或者当使用路由器时:
router.navigate('/login', { queryParamsHandling: "preserve" })
queryParamsHandling
的另一个可能选项是merge
。