angular - CanActivate Observable<boolean> not working or EventEmitter.asObservable()? Angular2 -


i'm using observable , eventemitter can see full code at: http://plnkr.co/edit/hv2swd?p=preview

even using publishreplay not work :(

i suspect of eventemitter.asobservable()

what i'm missing?

auth-service.ts:

@injectable() export class authservice {   private _isloggedin: boolean = false;   private _isloggedinevent: eventemitter<boolean>;   private _isloggedinobservable: observable<boolean>;    constructor(){     this._isloggedinevent = new eventemitter<boolean>();     this._isloggedinobservable =  this._isloggedinevent.asobservable().publishreplay(1);     this._isloggedinevent.emit(false);   }    login() {     return observable.of(true).delay(1000).do(val =>{        this.isloggedin = true;       this.isloggedinevent.emit(true);     });   }    logout() {     this.isloggedin = false;   }    isloggedinobservable() : observable<boolean> {      return this._isloggedinobservable;   } } 

finally used behaviorsubject in stead of event emitter , works here solution http://plnkr.co/edit/hgwgh8?p=preview

@injectable() export class authservice {   private _isloggedin: boolean = false;   private _isloggedinevent: behaviorsubject<boolean>;   private _isloggedinobservable: observable<boolean>;    constructor(){     this._isloggedinevent = new behaviorsubject<boolean>(false);     this._isloggedinobservable =  this._isloggedinevent.asobservable();     //this._isloggedinevent.next(false);   }    login() {     return observable.of(true).delay(1000).do(val =>{        this.isloggedin = true;       this.isloggedinevent.next(true);     });   }    logout() {     this.isloggedin = false;   }    isloggedinobservable() : observable<boolean> {      return this._isloggedinobservable;   } } 

Comments