Angular Firebase身份验证

时间:2018-06-29 13:54:27

标签: angular typescript firebase-authentication

我正在尝试学习angularfire,并向我的网站添加一些身份验证。但是它没有按预期工作。我不明白为什么这部分不能动态运行

@HostBinding('class') classes = (this.isLoggedIn())
    ? 'navbar navbar-expand-md sticky-top navbar-dark bg-dark'
    : 'navbar navbar-expand-md sticky-top navbar-light bg-light';

它在初始化时工作一次。但是随后什么也没有发生。 这是我的服务

@Injectable({
  providedIn: 'root'
})
export class AuthService {
  private user: Observable<firebase.User>;
  private userDetails: firebase.User = null;

  constructor(
    private _firebaseAuth: AngularFireAuth,
    private router: Router
  ) {
    this.user = _firebaseAuth.authState;

    this.user.subscribe(
      user => {
        if (user) {
          this.userDetails = user;
          console.log(this.userDetails);
        } else {
          this.userDetails = null;
        }
      }
    );
  }

  signInWithFacebook() {
    return this._firebaseAuth.auth.signInWithPopup(
      new firebase.auth.FacebookAuthProvider()
    );
  }

  isLoggedIn(): boolean {
    return this.userDetails != null;
  }

  logOut(): void {
    this._firebaseAuth.auth.signOut()
    .then(res => this.router.navigate(['/']));
    console.log('logged out');
  }
}

1 个答案:

答案 0 :(得分:1)

可能只是被调用一次-您必须具有可观察的对象或将触发事件以设置类的对象? IsLoggedIn()只是一个函数,在NgOnit上可能只是被调用一次,然后再也不会被调用。

相关问题