database - {...} 类型的参数不能分配给 [ ] 类型的参数
问题描述
import { Component } from '@angular/core';
import { IonicPage, NavController, NavParams } from 'ionic-angular';
import { EventDetail } from '../../models/event-detail/event-detail.interface';
import { AngularFireDatabase, AngularFireList } from 'angularfire2/database';
@IonicPage()
@Component({
selector: 'page-event',
templateUrl: 'event.html',
})
export class EventPage {
eventDetail = {} as EventDetail;
eventDetailRef$: AngularFireList<EventDetail[]>;
constructor(public navCtrl: NavController, public navParams: NavParams, private database: AngularFireDatabase) {
this.eventDetailRef$ = this.database.list('event-detail');
}
addEvent( eventDetail: EventDetail) {
this.eventDetailRef$.push({
eventName: this.eventDetail.eventName,
eventDesc: this.eventDetail.eventDesc,
});
}
}
一年前我遵循了一个教程,我已经 rad “升级到 Angularfire 5.0”,谷歌搜索了同样的问题,结果完全不同
错误信息是:
“'{ eventName: string; eventDesc: String; }' 类型的参数不可分配给 'EventDetail[]' 类型的参数。对象文字只能指定已知属性,并且 'eventName' 类型不存在于 'EventDetail[] ’。”
和我的 EventDetail 接口:
export interface EventDetail {
eventName: string;
eventDesc: String;
lat: number;
lgt: number;
}
解决方案
更改eventDetailRef$: AngularFireList<EventDetail[]>;
为eventDetailRef$: AngularFireList<EventDetail>
因为因为您的类型是Array<Array>
并且您尝试推送单个项目