在我的Angular 5应用程序中,我使用外部身份验证提供程序进行用户身份验证 . 我配置了链接,用于通过查询字符串参数打开应用程序中的特定部分 . 为了通过身份验证过程保存原始所需的URL,我将其保存到本地存储 .
当我检索URL时,我似乎无法构造对router.navigate()的调用来正确处理路由并包含原始查询参数 . 这可能吗?
示例网址可能是 https://myapp.com/contacts/new?assign=customer&id=123
我试过用 this.router.navigate([fullRedirect], { queryParamsHandling: 'merge' });
但我最终在我的浏览器中找到了像 /contacts/new%3Fassign%3Dcustomer%26id%3D123
这样的URL,Angular Router将 new%3Fassign%3Dcustomer%26id%3D123
视为 :id
/contacts
,而不是路由到 /contacts/new
并包含原始URL参数 .
我的目标是在应用程序增长时使用可以使用各种URL参数的通用解决方案 .
你有这种事情的成功吗?任何提示将不胜感激 .
2 回答
这个问题很难解释(对不起!) . 在从外部身份验证步骤(通过Auth0)返回后首次加载应用程序时,我丢失了查询参数 .
完整的URL已保存到浏览器的本地存储中,但我无法实现导航到正确的Angular Route并保留原始查询参数的所需组合 .
在我的auth服务中对查询参数的处理进行硬编码被证明是不灵活和繁琐的 .
我最终使用
NavigationEvent
设置和navigateByUrl()
的组合使用了这个 .该场景非常具体......图片从书签或单独的系统加载一个复杂的URL,“深度链接”到Angular应用程序 .
不知道你在做什么,但你获得修改后的URL的原因是因为无论何时存储在本地存储或cookie中,它都会被编码 .
因此,从本地存储中检索后,您可以使用它
variable = decodeURI(retrieveFromLocalStorage)
然后在您的路线中使用此变量