我已成功遵循this tutorial将数据记录到Firebase数据库中。但是,在学习本教程时,我意识到他使用的是“ FirebaseListObservable”,现在已更新为“ AngularFireList”。我改变了这一点,为了使它起作用,我必须确保我将事务保留为对象,而不是他所做的数组。
我的代码:transactionRef$: AngularFireList<transaction>
他的代码:shoppingItemRef$: FirebaseListObservable<ShoppingItem[]>
正如我所说,这可以解决我的错误,并且我的数据已正确记录到数据库中。但是,在继续阅读教程并尝试实现数据检索时,我很快收到了此错误:
错误:InvalidPipeArgument:管道“ AsyncPipe”的“ [对象对象]”
HTML
<ion-content padding>
<ion-list>
<ion-item *ngFor="let transaction of transactionRef$ | async">
<h2>Currency: {{transaction.transactionCurrency}}</h2>
<h3>Amount: {{transaction.transactionAmount}}</h3>
<h4>Receiver: {{transaction.transactionReceiver}}</h4>
</ion-item>
</ion-list>
</ion-content>
TS
import { Component } from '@angular/core';
import { NavController, NavParams } from 'ionic-angular';
import { AngularFireDatabase, AngularFireList } from 'angularfire2/database';
import { transaction } from '../../models/transaction/transaction.interface';
@Component({
selector: 'page-view',
templateUrl: 'view.html',
})
export class ViewPage {
transactionRef$: AngularFireList<transaction>
constructor(public navCtrl: NavController,public navParams: NavParams, private database: AngularFireDatabase) {
this.transactionRef$ = this.database.list('transaction');
}
}
要解决此问题,我更改了以下行:<ion-item *ngFor="let transaction of transactionRef$ | async">
收件人:<ion-item *ngFor="let transaction of transactionRef$">
但是,这给了我以下错误:
错误:找不到类型为“对象”的其他支持对象“ [对象对象]”。 NgFor仅支持绑定到数组等Iterable。
在读取这两个错误后,很明显,故障是由于对象和数组类型不兼容引起的。但是,我不知道该如何解决。我读过多个帖子,碰到有这两个错误的人,但是大多数人都在使用JSON(我不是),或者正在使用“ FirebaseListObservable”,因此可以通过将错误从对象更改为数组或排除错误来修复错误“ | aysnc”,对我都不起作用。
任何帮助将不胜感激。
答案 0 :(得分:0)
如果要从5.x起从Observable<Response>
获得AngularFireList
,请使用valueChanges()
函数。
this.transactionRef$ = this.database.list('transaction').valueChanges();
引荐-https://github.com/angular/angularfire2/blob/master/docs/version-5-upgrade.md#50