Ich habe grundsätzlich eine Klasse, die commModel.sessionState$
abonnieren sollte und wenn isValid
ist wahr, sollte es den Timer abbrechen und neu erstellen. Das Problem ist, dass wenn der Timer ausgelöst wird, bekomme ich diesen Fehler: TypeError: Cannot read property 'setSessionState' of undefined
, aber wenn das Debuggen im Konstruktor commModel
ist in Ordnung. Auch die console.log im Abonnement wird nicht ausgeführt. Wo ist das Problem und wie kann ich es beheben?Anrufer oder Abbrechen Timer Ereignis Winkel 2
import { Injectable } from '@angular/core';
import { CommonModel } from '../core/store/common.model';
import { Observable } from 'rxjs/Observable';
import 'rxjs/add/observable/interval';
import 'rxjs/add/operator/publish';
import 'rxjs/add/operator/startWith';
@Injectable()
export class SessionTimeoutHandler {
sessionState: Observable<boolean>;
timeoutCountdown$: Observable<boolean>;
timer: any;
constructor(private commModel: CommonModel) {
this.sessionState = commModel.sessionState$;
this.sessionState.subscribe(
isValid => {
console.log('test',isValid);
if(isValid) {
clearTimeout(this.timer);
this.timer = setTimeout(this.invalidateSessionState, 5 * 1000);
}
}
)
this.timer = setTimeout(this.invalidateSessionState, 5 * 1000);
}
invalidateSessionState() {
this.commModel.setSessionState(false);
}
}
Ich gehe davon aus für 'setTimeout()' sollten Sie 'clear (this.timer) verwenden ; ' –
@ GünterZöchbauer Ja, tut mir leid, habe gerade gesehen, aber das hilft nicht bei dem undefinierten Fehler. – user3719857