【问题标题】:Argument of type {...} is not assignable to parameter of type [ ]{...} 类型的参数不能分配给 [ ] 类型的参数
【发布时间】:2019-02-13 03:21:05
【问题描述】:
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

【问题讨论】:

    标签: database angular typescript firebase-realtime-database ionic3


    【解决方案1】:

    eventDetailRef$: AngularFireList&lt;EventDetail[]&gt;; 更改为eventDetailRef$: AngularFireList&lt;EventDetail&gt;

    因为你的类型是Array&lt;Array&gt;,而你试图推送单个项目

    【讨论】:

    • 谢谢你解决了这个错误,现在我需要检索用户当前位置并将其与名称和描述一起推送,非常感谢!
    • @HaHadi 欢迎你,如果答案对你有帮助,请点赞
    【解决方案2】:

    错误消息指出您正在尝试将{ eventName: string; eventDesc: String; } 分配给EventDetail数组

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

    【讨论】:

    • 感谢您的解释,我是 ionic 方面的新手。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-01-05
    • 2019-10-30
    • 1970-01-01
    • 2018-12-26
    • 2021-06-19
    • 2021-12-13
    相关资源
    最近更新 更多