Javascript 正在Angular 2应用程序中注销前从中检索URL

Javascript 正在Angular 2应用程序中注销前从中检索URL,javascript,angular,typescript,routing,Javascript,Angular,Typescript,Routing,我试图在用户退出Angular 2应用程序之前获取最后一个活动url,这样当用户重新登录时,它会将他们重定向到该组件/页面。问题是,虽然我能够通过this.router.routerState.snapshot['url'],获取活动url,但这始终会为我提供结果/login——这是他们在注销后直接指向的url。我需要做的是在注销之前找到一种获取url的方法。我尝试在authenticationService的注销功能中执行此操作: logout() { let activeUrl =

我试图在用户退出Angular 2应用程序之前获取最后一个活动url,这样当用户重新登录时,它会将他们重定向到该组件/页面。问题是,虽然我能够通过
this.router.routerState.snapshot['url']
,获取活动url,但这始终会为我提供结果
/login
——这是他们在注销后直接指向的url。我需要做的是在注销之前找到一种获取url的方法。我尝试在authenticationService的注销功能中执行此操作:

logout()
{
    let activeUrl = this.router.routerState.snapshot['url'];
    console.log(activeUrl);
    this.apiService.logout();

    // remove user from local storage to log user out
    sessionStorage.removeItem('currentUser');
    console.log('User successfully logged out');

    // Trigger event
    this.change.emit(this);
}
但是,即使在调用
this.apiService.logout()
之前已将activeUrl记录到console.logged(请参见上述函数中的操作顺序),我仍然会将
/login
记录到控制台。这是意料之中的事吗?我怎样才能避开这件事

编辑:经过一些思考后,我现在意识到问题可能是我正在从我的登录组件的
ngOnInit
生命周期钩子中调用logout()函数-因此在这一点上,“/login”将成为结果,不管:

ngOnInit()
{
    this.authenticationService.getActiveUrl();
    this.authenticationService.logout();
}
因此,相关的问题变成了:如何在注销之前捕获活动URL?

在中,it声明
RouterState
包含
RouterStateSnapshot
,因此在我看来
toString()当您将其登录到console时,将调用
,但您仍在
activeUrl中保留一个引用,该引用可能会更改

尝试:

在中,它声明
RouterState
包含
routerstatesnashot
,因此在我看来,
toString()
在您将其登录到控制台时被调用,但您仍然在
activeUrl
中保留一个引用,该引用可能会更改

尝试:


不行。完全相同的结果。我相信这已经是一根绳子了,不行。完全相同的结果。我相信这已经是一个字符串了。当你
console.log(window.location.href)
时,你得到了正确的url吗?那么
this.router.url
值呢?我得到了完全相同的结果--“/login”。实际上,我现在意识到问题可能是我正在调用logout()从我的登录组件的ngOnInit生命周期钩子中获取函数-因此在这一点上,“/login”将成为结果。当您
console.log(window.location.href)
时,您是否获得了正确的url?以及
this.router.url
值呢?我得到的结果完全相同--“/login”。实际上,现在我突然想到,问题可能是我正在从我的登录组件的ngOnInit生命周期钩子中调用logout()函数,因此无论结果如何,“/login”都将是结果。
let activeUrl = this.router.routerState.snapshot['url'].toString();