2016-12-12 88 views
2

使用Angular 2,我有一個處理認證的AuthService。我試圖找出用戶登錄/註銷時通知其他組件的最佳方式,但我不確定處理這種情況的正確方法。有什麼建議麼?謝謝!通知服務變更的角度2組件

+0

有方法,它返回一個可觀察或承諾? – toskv

回答

3

最好的方法是使用BehaviorSubject

class AuthService { 

private _isLoggedIn:Subject<boolean> = new BehaviorSubject<boolean>(false); 

    getUser() { 
     return !!localStorage.getItem('user');  
    }; 

    isLoggedIn() { 
    this.getUser() && this._isLoggedIn.next(true); 
    !this.getUser() && this._isLoggedIn.next(false); 
    return this._isLoggedIn.asObservable(); 
    } 
} 

//在你的組件

class NavComponent { 
    constructor(private AuthService: AuthService) { 
     this.AuthService.isLoggedIn().subscribe(status => this.isLoggedIn = status); 
    } 
} 
+1

您有'isLoggedIn'的重複定義。 – yuxhuang

+0

一個是組件,一個是服務 – Bazinga

+1

'isLoggedIn'既是AuthService中的一個字段又是一個方法。 – yuxhuang