2016-12-12 4 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

Смежные вопросы