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
Post a Comment