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