【发布时间】:2017-11-03 21:52:41
【问题描述】:
在我的 Angular 2 应用程序中,我试图将最后一个活动 URL prior 存储给注销的用户,以便在用户重新登录后可以重新加载该 URL。但是,事实证明这是有问题的。考虑一下我的 authenticationService 中的这个注销功能:
logout()
{
let lastUrl = this.getActiveUrl();
console.log('Url before logout: ', lastUrl);
this.apiService.logout();
}
注意这里的“lastUrl”,它调用this.getActiveUrl(),看起来像这样:
getActiveUrl()
{
let activeUrl = this.router.routerState.snapshot['url'];
console.log('activeUrl: ', activeUrl);
return activeUrl;
}
...出现在this.apiService.logout() 之前。但是,尽管如此,“lastUrl”打印到控制台的是“/login”。但这是我退出后立即 结束的 URL。
所以,请帮助我理解这一点:
如果这是同步的,为什么这里没有打印正确的 URL?我错过了什么?以及如何在之前立即获取活动 url 以注销触发并重新定向到“/login”?
编辑:根据评论者的建议,我尝试分配给 localStorage 而不是局部变量,如下所示:
logout()
{
localStorage.setItem('returnUrl', JSON.stringify(this.router.routerState.snapshot['url']));
this.apiService.logout();
}
但是当我用localStorage.returnUrl 挖掘出这个值时,我仍然得到“/login”。
【问题讨论】:
-
如果你把 let lastUrl = this.router.routerState.snapshot['url'];有用吗?
-
您可以使用
Router代替ActivatedRoute并使用this.route.url获取网址 -
看看我在下面做了什么。
标签: javascript angular typescript routing synchronous