我使用查询参数导航到我的应用中的某个页面.从URL中获取参数后我想删除它,理想情况下我会这样:
let userToken: string;
this.sub = this.router
.routerState
.queryParams
.subscribe(params => {
userToken = params['token'];
params['token'].remove();
});
Run Code Online (Sandbox Code Playgroud)
但显然删除功能不存在.有人有替代方案吗?
Mik*_*One 40
以防人们找到这个帖子(就像我做的那样).我有一个场景,我在查询字符串中收到一个JWT令牌(/ login?jwt = token).我需要获取此令牌(并存储它等),但随后需要确保从URL中安全地删除它.重新加载登录路由(通过使用this.router.navigate(['login'])在principe中工作,然而,用户可以使用浏览器后退按钮,基本上重放令牌登录.
我通过不使用导航但通过DI''位置'服务(来自@ angular/common)解决了这个问题.此服务具有'replaceState'方法,该方法从历史记录以及URL中完全删除令牌
this.location.replaceState('login')
Run Code Online (Sandbox Code Playgroud)
希望能帮助别人.
小智 25
您可以分配null
给特定的queryParam:
this.router.navigate([], {queryParams: {page: null}, queryParamsHandling: 'merge'});