Как использовать onIdleEnd в маршрутизации? - PullRequest
0 голосов
/ 31 марта 2019

Мне нужно реализовать тайм-аут в моем приложении, если на странице нет активности пользователя. Я перенаправляю пользователя на домашнюю страницу, это означает, что мне нужно прервать режим ожидания в какой-то момент, когда одно из событий срабатывает, например, щелчок или наведение мыши.

Я решил использовать ng-idle для этой цели. Мое приложение состоит из множества страниц, и я хочу, чтобы на всех них было время ожидания, поэтому я вставил код простоя пользователя в компонент страницы, который расширяется каждым другим компонентом. В моем приложении есть файл rout.module.ts, который определяет порядок маршрутизации для всех страниц. Проблема в том, что onIdleEnd работает только для первой страницы в маршрутизации, на всех других страницах onTimeout начинает обратный отсчет, но не останавливается на событиях, которые я определил. На первой странице работает нормально, останавливается и сбрасывается.

Вот код из конструктора в компоненте страницы:

Конструктор (

private idle: Idle, 
private keepalive: Keepalive,
private stateDataService: AppStateDataService,
private dbService: InMemoryDbManagerService,
private router?: Router

) {

 idle.setIdle(5);
 idle.setTimeout(5);
 scrolls, touches to the document
 idle.setInterrupts(DEFAULT_INTERRUPTSOURCES); 
 idle.onIdleEnd.subscribe(() => {this.idleState = 'No longer  idle.',console.log("onIdleEnd")});
 idle.onTimeout.subscribe(() => {
   this.idleState = 'Timed out!';
   this.timedOut = true;
   this.router.navigate(['/']);
   console.log("onTimeout")
 });
 idle.onIdleStart.subscribe(() => {this.idleState = 'You\'ve gone idle!',console.log("onIdleStart")});
 idle.onTimeoutWarning.subscribe((countdown) => {this.idleState = 'You will time out in ' + countdown + ' seconds!',console.log(countdown)});
    keepalive.interval(15);

 keepalive.onPing.subscribe(() => this.lastPing = new Date()); 

}

сброс () {

this.idle.watch();
this.idleState = 'Started.';
this.timedOut = false;

}

ngOnInit () {

this.reset();

}

В попытался добавить

ngOnInit () {

this.reset();

} в каждом компоненте, вместо добавления его только в компонент страницы, он не работал эфиром. Что я делаю не так? Спасибо.

...