首页 文章

{...}类型的参数不能分配给[]类型的参数

提问于
浏览
0
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,
    });

  }

}

我跟着一年前的教程,我已经“升级到Angularfire 5.0”,谷歌搜索同样的问题,结果有很大的不同

错误消息是:

“类型'{eventName:string; eventDesc:String;}'的参数不能分配给'EventDetail []'类型的参数 . 对象文字只能指定已知属性,'eventName'在类型'EventDetail []中不存在”“ .

和我的EventDetail接口:

export interface EventDetail {
    eventName: string;
    eventDesc: String;
    lat: number;
    lgt: number;

}

the error image

2 回答

  • 0

    eventDetailRef$: AngularFireList<EventDetail[]>; 更改为 eventDetailRef$: AngularFireList<EventDetail>

    因为您的类型是 Array<Array> 并且您尝试推送单个项目

  • 0

    错误消息指定您尝试将 { eventName: string; eventDesc: String; } 分配给 array EventDetail

    push 方法需要一个数组,而不是一个实例 .

相关问题