invalidpipeargument:' [object object']:显示错误

时间:2018-04-13 17:05:47

标签: firebase firebase-realtime-database ionic3 angularfire2

所以我对Ionic和Firebase相对较新,我正在尝试显示Firebase中已存在的用户数据。 这是我得到的错误:

invalidpipeargument: '[object object']: error showing.

在查看与我类似的其他问题后,我确实知道问题所在。我似乎无法分配异步函数,因为database.object不会返回一个observable。因此,我尝试添加.valueChanges();以使其成为可观察对象,但我认为这与angularfireobject发生冲突,因为已经将其分配给变量profile.data,因此这不起作用。< / p>

我也试过这个:

// get (): AngularFireObject<any[]>{
        //return this.afDatabase.list`/profile/${data.uid}`;
        //}

如果你指出我的方向很好。 这是我的代码:

.ts文件

import { Component } from '@angular/core';
import { NavController, ToastController } from 'ionic-angular';
import { AngularFireAuth } from 'angularfire2/auth';
import { AngularFireDatabase, AngularFireObject} from 'angularfire2/database';
import { Profile } from '../../model/profile';
import { DEFAULT_INTERPOLATION_CONFIG } from '@angular/compiler';

@Component({
  selector: 'page-about',
  templateUrl: 'about.html'
})
export class AboutPage {

  profileData: AngularFireObject<Profile>
    // get (): AngularFireObject<any[]>{
    //return this.afDatabase.list`/profile/${data.uid}`;
    //}

  constructor(private afAuth:AngularFireAuth, private afDatabase: AngularFireDatabase, 
    public navCtrl: NavController, private toast: ToastController) {

  }
  ionViewDidLoad() {
   this.afAuth.authState.take(1).subscribe(data =>{

    if (data && data.email && data.uid){
      this.toast.create({
        message: `Welcome to MatchMyFighter ${data.email}`,
        duration: 3000,
      }).present();

     // this.profileData = this.afDatabase.object(`profile/${data.uid}`)
     this.profileData = this.afDatabase.object(`/profile/${data.uid}`).valueChanges();;
    }

    else{
      this.toast.create({
        message:`could not autenticate`,
        duration:3000
      }).present;
    }
   })
  }



}

html的

<p>
    Username: {{(profileData | async)?.username}}
  </p>

1 个答案:

答案 0 :(得分:0)

valueChanges()的调用会将AngularFireObject<Profile>转换为可观察对象。 您必须将类型更改为Observable<Profile>,如下所示:

profileData: Observable<Profile>;

constructor(private db: AngularFireDatabase) { } // other stuff emitted ...

ionViewDidLoad() {
    // ...
    this.profileData = this.db.object<Profile>(`/profile/${data.uid}`).valueChanges();
    // ...
}