从服务中通知Angular 2组件的更改

时间:2016-12-12 15:25:50

标签: authentication angular typescript

使用Angular 2,我有一个处理身份验证的AuthService。我正在尝试找出用户登录/注销时通知其他组件的最佳方法,但我不确定处理此方案的正确方法。有什么建议?谢谢!

1 个答案:

答案 0 :(得分:5)

最好的方法是使用 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);
    }
}