Я использую пакет angular-user-idle npm для отслеживания неактивного состояния браузера и отображения всплывающего окна сеанса в заданное время ожидания. Библиотека работает хорошо, когда вы не перенаправляете с этого конкретного компонента по таймауту. Когда вы перенаправляете на домашнюю страницу или аналогичную страницу и повторно вводите тот же более ранний компонент, и если на этот раз происходит тайм-аут, всплывающее окно появляется несколько раз.
Теперь, чтобы объяснить вам это, во время 1-й загрузки я отображал номер счетчикакомпонента и 2-й загрузки компонента на скриншотах ниже. Если внимательно посмотреть на второе изображение, то номер каждого счетчика появляется дважды. Что является причиной того, что всплывающее окно появляется несколько раз? Как я могу избежать этого?
ngOnInit() {
//Start watching for user inactivity.
this.restart();
this.userIdle.startWatching();
// Start watching when user idle is starting.
this.userIdle.onTimerStart().subscribe(count => console.log(count));
// Start watch when time is up.
this.userIdle.onTimeout().subscribe(() => {
this.openGenericDialog('GenericAlert', "Your session is expired!");
this.dialogRef.afterClosed().subscribe(
result => {
this.dialogResult = result;
this.stopWatching()
this.stop();
this.createUpdateLoggedInRecord('Simulation',
this.varUser.UserKeyID, false);
this.router.navigateByUrl('/authentication');
});
}
);
}
stop() {
this.userIdle.stopTimer();
}
stopWatching() {
this.userIdle.stopWatching();
}
restart() {
this.userIdle.resetTimer();
}