ユーザーがログインしているときに、$key が auth.uid に等しい Firebase データベースの '/users/$key' URL から、currentUser FirebaseObjectObservable にユーザー データを取得したいと思います。ユーザーがログアウトしたときも同様です。 、 currentUser は自動的に null になります。
そのためには、テンプレートで非同期パイプを使用する必要があると考えていますが、ログイン後に currentUser データしか取得できず、ログアウト後もメモリに残ります (私が行った方法)。auth オブジェクトが null になったときに自動的に 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 認証オブジェクトは、私が理解している 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>();
});
}
それでも、それは私には正しくありません。このままでいいのでしょうか?