当用户登录时,我想将用户数据从我的 Firebase 数据库的“/users/$key”url 获取到 currentUser FirebaseObjectObservable,其中 $key 等于 auth.uid。我也想在用户注销时, currentUser 自动变为 null。
为此,我认为我需要在我的模板中使用异步管道,但我只能在登录后获取 currentUser 数据,并且在注销后它会保留在内存中(我已经这样做了)。我希望当 auth 对象变为空时它会自动变为空。
import { Component } from '@angular/core';
import { AngularFire, FirebaseObjectObservable } from 'angularfire2';
@Component({
selector: 'my-app',
templateUrl: './app.component.html',
styleUrls: ['./app.component.css'],
})
export class AppComponent {
currentUser : FirebaseObjectObservable<any>;
constructor(public af: AngularFire) {
this.af.auth.subscribe(auth => {
console.log(auth);
this.currentUser = af.database.object('/users/' + auth.uid);
});
}
}
我可以在我的模板中使用这样的东西{{(currentUser | async)?.email}}
我对 Observables 缺乏了解是这里的问题,而且 AngularFire auth 对象与我所理解的 rxjs/Observable 不同。
更新:
这就是我解决它的方法:
constructor(public af: AngularFire) {
this.af.auth.subscribe(auth => {
console.log(auth);
if(auth)
this.currentUser = af.database.object('/users/' + auth.uid);
else
this.currentUser = new FirebaseObjectObservable<any>();
});
}
但我觉得不对。这样做可以吗?