Автоматический выход через некоторое время только без обнаружения от пользователя в angular6 - PullRequest
0 голосов
/ 14 декабря 2018

Требование:

  1. Автоматический выход из приложения через определенное время (5 минут или 10 минут).
  2. Во время выхода из системы необходимо проверять любые обнаруженные изменения измененийв нашем приложении.
  3. Если да, не нужно выходить из приложения, иначе мы выйдем из приложения.

У меня есть Google, но выйти, даже если я изменяюсь в приложении.

  • Мой код:

import {Observable, Subject, Subscription, BehaviorSubject} из 'rxjs / rx';

@ Component({selector: 'app-root', templateUrl: './app.component.html', changeDetection: ChangeDetectionStrategy.OnPush})

private _timeoutSeconds: number = 15;
private timerSubscription: Subscription;
private timer: Observable<number>;
private resetOnTrigger: boolean = false;
public timeoutExpired: Subject<number> = new Subject<number>();



constructor(
    public router: Router,
    private cd: ChangeDetectorRef) {

    this.timeoutExpired.subscribe(n => {
        alert("logout");
    });

    this.startTimer();

}

public startTimer() {
    if (this.timerSubscription) {
        this.timerSubscription.unsubscribe();
    }
  this.timer = Observable.timer(this._timeoutSeconds * 1000);
    this.timerSubscription = this.timer.subscribe(n => {
        this.timerComplete(n);
    });
}

public stopTimer() {
    console.log(this.cd + " " + "stop timer");
    this.timerSubscription.unsubscribe();
}

public resetTimer() {
    console.log(this.cd + " " + "reset timer");
    if (this.timerSubscription) {
        this.timerSubscription.unsubscribe();
    }

    this.timer = Observable.timer(this._timeoutSeconds * 1000);
    this.timerSubscription = this.timer.subscribe(n => {
        this.timerComplete(n);
    });
}

private timerComplete(n: number) {
   console.log(this.cd.detectChanges() + " " + "timer complete");
    this.timeoutExpired.next(++this._count);
    this.resetTimer();
    if (this.resetOnTrigger) {
        this.startTimer();
    }
}
...