2016-12-12 11 views
2

角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

1つはコンポーネントで、1つはサービスです – Bazinga

+1

'isLoggedIn'は' AuthService'のフィールドとメソッドの両方です。 – yuxhuang

関連する問題