Проверьте функцию startWatching. что происходит, когда он завершает sh (число 5 относится к минутам?), он сбрасывает себя к своему начальному значению? потому что если он это сделает, он просто продолжит работать.
Неважно, на какой странице вы находитесь. это одна из особенностей наблюдаемых. Когда вы регистрируете один, он продолжает слушать. Вот почему вы должны отписаться (в ng-destroy) от них, или у вас будет утечка памяти.
Мне не очень ясно, чего вы хотите достичь, это контролировать время, прошедшее для пользователя с тех пор, как он залогинен? Лучше сделать это с токенами и установить для них время.
Если вы все еще хотите использовать используемый вами метод, вы можете добавить условие, которое проверяет, находится ли пользователь на стороне сотрудника:
например:
isInEmployee: boolean;
constructor(private bnIdle: BnNgIdleService, private router: Router){
}
ngOnInit() {
this.isInEmployee = true;
this.bnIdle.startWatching(5).subscribe((isTimedOut: boolean) => {
if (isTimedOut && isInEmployee) ) {
this.router.navigate(['/signin']);
console.log('session expired');
}
return;
});
}
ngOnDestroy() {
this.isInEmployee = false; -> with your method
//but its better to unsubscribe from 'startWatching'
}
Но я бы порекомендовал использовать JWT для любых сеансовых операций с помощью sessionStroage