我想将用户数据传输到currentUser FirebaseObjectObservable,来自我的Firebase数据库的'/ users / $ key'网址,其中$ key等于auth.uid,当用户登录时。我也喜欢什么时候用户注销,currentUser自动变为空。
为此,我想我需要在模板中使用异步管道,但我只能在登录后获取currentUser数据,并在注销后保留在内存中(我已经完成了它)。我希望当auth对象变为null时它会自动变为空。
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>();
});
}
然而我感觉不对。这样做可以吗?
答案 0 :(得分:2)
以下是如何在视图中显示您的uid的方法。你正在努力。没有必要将这个作为FireBaseObjectObservable。 auth为你做了一切
<强> component.ts 强>
export class DashboardComponent {
email:any;
userid: string;
constructor(public af: AngularFire) {
this.af.auth.subscribe(auth => {
console.log(auth.uid);
this.userid = auth.uid;
this.email = af.auth.getAuth().auth.email;
});
}
}
<强> component.html 强>
<h1>{{ userid}}</h1>
<h1>{{email}}</h1>
这是您应该从用户那里获取所有数据的方式