Аргумент типа {...} не может быть назначен параметру типа [] - PullRequest
0 голосов
/ 07 сентября 2018
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;

}

изображение ошибки

Ответы [ 2 ]

0 голосов
/ 07 сентября 2018

Изменить eventDetailRef$: AngularFireList<EventDetail[]>; на eventDetailRef$: AngularFireList<EventDetail>

Потому что ваш тип Array<Array> и вы пытаетесь нажать на один элемент

0 голосов
/ 07 сентября 2018

В сообщении об ошибке указывается, что вы пытаетесь присвоить { eventName: string; eventDesc: String; } массиву из EventDetail

Метод push ожидает массив, а не один экземпляр.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...