Angular-登出地点

时间:2018-10-10 10:14:18

标签: angular

我知道有很多类似的问题,但是我没有找到我需要的东西。

在我的应用程序中,我需要存储用户的登录\注销时间。如果用户手动注销也可以,但是他只需关闭窗口或浏览器即可。

我发现Angular中有一个window.onClose()函数,但是我不知道该在哪里使用。

会出现在每个组件中吗?还是在根组件中?而且,最适合我的情况的解决方案是什么?

2 个答案:

答案 0 :(得分:0)

现代浏览器中没有关闭事件,但是有一个onbeforeunload,尽管您不能做很多事情,但我认为它足以供您使用

这是一个javascript功能,因此您可以将其放置在任何地方,使用root组件会更好,您可以做的就是将关闭时间缓存在本地存储中,如下所示:

 window.onbeforeunload = function(){
       localstorage.setItem("closeTime", new Date().getTime())
 };

我不确定是否可以发送HTTP请求,这有什么限制,但是该示例有效,如果需要,您可以在下次打开应用程序时从localstorage中获取该项目

答案 1 :(得分:0)

您能否在路由配置中尝试canDeactive

@NgModule({
  imports: [
    RouterModule.forRoot([
      {
        path: 'team/:id',
        component: TeamCmp,
        canDeactivate: ['canDeactivateTeam']
      }
    ])
  ],
  providers: [
    {
      provide: 'canDeactivateTeam',
      useValue: (component: TeamComponent, currentRoute: ActivatedRouteSnapshot, currentState:
RouterStateSnapshot, nextState: RouterStateSnapshot) => true
    }
  ]
})
class AppModule {}

参考:https://angular.io/api/router/CanDeactivate