所以我对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>
答案 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();
// ...
}