我正在尝试学习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');
}
}
答案 0 :(得分:1)
可能只是被调用一次-您必须具有可观察的对象或将触发事件以设置类的对象? IsLoggedIn()只是一个函数,在NgOnit上可能只是被调用一次,然后再也不会被调用。