【发布时间】:2025-12-11 07:55:02
【问题描述】:
我目前正在使用 Angular 5。它给了我一个管道错误。我相信版本之间存在冲突,我猜我提到的视频使用的是角度 4。我刚开始的错误是 Error 。 InvalidPipeArgument: '[object Object]' 用于管道'AsyncPipe'。
这是 .ts 文件
import { Component } from '@angular/core';
import { IonicPage, NavController, NavParams, List } from 'ionic
angular';
import { AngularFireAuth } from 'angularfire2/auth';
import {Profile} from '../../model/profile';
import { AngularFireDatabase} from 'angularfire2/database';
import { auth } from 'firebase';
import { UserprofilePage } from '../userprofile/userprofile';
@IonicPage()
@Component({
selector: 'page-editprofile',
templateUrl: 'editprofile.html',
})
export class EditprofilePage {
profile = {}
as Profile;
constructor(
public navCtrl: NavController,
public navParams: NavParams,
private afAuth: AngularFireAuth,
private afDatabase: AngularFireDatabase
) { }
ionViewDidLoad() {
}
createProfile() {
this.afAuth.authState.take(1).subscribe(auth => {
this.afDatabase.object(`user/${auth.uid}`).set(this.profile)
.then(() => this.navCtrl.setRoot(UserprofilePage))
})
}
}
这是显示数据的 .html 文件。
这是个人资料页面
<p> Name : {{(profileData | async) ?. name}}</p>
<p> Location : {{(profileData | async) ?. location}}</p>
<p> Pets : {{(profileData | async) ?. pets}}</p>
<p> Gallery : {{(profileData | async) ?. gallery}}</p>
<p> About me : {{(profileData | async) ?. aboutme}}</p>
这是个人资料页面的 .ts 文件
import { Component } from '@angular/core';
import { IonicPage, NavController, NavParams, ToastController } from
'ionic-angular';
import { EditprofilePage } from '../editprofile/editprofile';
import { AngularFireDatabase, AngularFireObject } from
'angularfire2/database';
import { AngularFireAuth } from 'angularfire2/auth';
import { Profile } from '../../model/profile';
import { auth } from 'firebase';
@IonicPage()
@Component({
selector: 'page-userprofile',
templateUrl: 'userprofile.html',
})
export class UserprofilePage {
profileData : AngularFireObject<Profile>
constructor(public navCtrl: NavController, public navParams: NavParams,
private afDatabase : AngularFireDatabase , private afAuth :
AngularFireAuth , private toast:ToastController) {
}
ionViewDidLoad() {
//console.log('ionViewDidLoad UserprofilePage');
this.afAuth.authState.take(1).subscribe(data => {
if (data && data.email && data.uid){
this.toast.create({
message: `Welcome,${data.email}`,
duration :3000
}).present();
this.profileData = this.afDatabase.object(`user/${data.uid}`)
}
else {
this.toast.create({
message : `No auth details`,
duration : 3000
}).present() ;
}
})
}
changeprofile(){
this.navCtrl.push(EditprofilePage);
}
}
【问题讨论】:
-
无法在您的主页代码中看到
profileData个人资料。请为您的ProfilePage添加TS代码 -
profileData必须是Observable<Profile>才能使用异步管道,而不仅仅是Profile对象。 -
this.afDatabase.object<Profile>(user/${auth.uid}).valueChanges() -
你好亚当,欢迎来到 *!首先,当您没有将变量绑定到字符串时,最好使用普通的单引号 (
')。其次,请考虑正确缩进您的代码,以便其他人可以理解您的代码。谢谢!
标签: angular