【发布时间】:2020-05-18 08:00:33
【问题描述】:
我是 Angular 的新手,我正在使用 bn-ng-idle 进行会话超时,它工作正常但是,当我将代码放入 ngOnInit 或 Constructor 时,尽管我在甚至不在同一个页面中,所以当我进入员工页面然后被路由到登录页面时,构造函数中的代码由于某种原因不断重复,感谢您的帮助。
employee.component.ts
constructor(private bnIdle: BnNgIdleService, private router: Router){
this.bnIdle.startWatching(5).subscribe((isTimedOut: boolean) => {
if (isTimedOut) {
this.router.navigate(['/signin']);
console.log('session expired');
}
return;
});
}
【问题讨论】:
-
检查 startWatching 功能。当它完成时会发生什么(5 数字指的是分钟?)它是否将自身重置为其初始值?因为如果这样做,它将继续运行。流程是:您在哪个页面都没有关系。这就是 observables 的重点。
-
哦,我明白了,实际上当它完成时它会再次开始计数,所以我找到了一个停止计数器的方法,即 stopTimer(),现在该方法被调用了两次,这应该仍然不会发生跨度>
-
在下面查看我的答案,而不是评论,我为你详细解答了答案。如果你发现它对你有用,请标记为答案,如果它不起作用,请回复什么不起作用,我会尽力帮助你。
标签: javascript angular typescript session-timeout