2016-08-04 6 views
2

私のFirebaseデータベースの '/ users/$ key' urlからcurrentUser FirebaseObjectObservableにユーザデータを取得したいと思います。ここで、$ keyはauth.uidになります。ログアウトすると、currentUserは自動的にnullになります。AngularFire2でユーザーがログインしている(authが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}}

観測に関する知識の私の不足が問題はここですが、またAngularFire認証オブジェクトは/私が理解から観察可能rxjs異なっています。

更新:

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>(); 
    }); 
} 

まだそれは私に権利を感じていません:

これは、私はそれを解決してきた方法です。このようにするのは大丈夫ですか?

答えて

2

あなたのビューに自分のuidを表示する方法は次のとおりです。あなたはそれを難し​​くしています。これをFireBaseObjectObservableにする必要はありません。認証は、あなた

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> 

のためにこれは、あなたの外のすべてのデータを取得する必要がありますどのようにすべてをあるんユーザー

関連する問題