Как исправить 'Item', в типе Item [] отсутствуют следующие свойства: длина, поп, толчок, конкат и еще 26 - PullRequest
0 голосов
/ 21 апреля 2019

Может кто-нибудь пожалуйста помочь исправить это?Я делаю приложение CRUD через FireBase и я новичок в TS и FireBase.Помогите мне, пожалуйста, я работаю над этим в течение нескольких дней.Спасибо

Мой файл TS:

import { Injectable } from '@angular/core';

import { Item } from './item';
import { AngularFireObject, AngularFireList, AngularFireDatabase } from 'angularfire2/database';
import * as firebase from 'firebase';



@Injectable()
export class ItemService {

  private basePath: string = '/items';

  items: AngularFireList<Item[]> = null;
  item: AngularFireObject<Item> = null;

  constructor(private db: AngularFireDatabase) { }

  getItemsList(query={}): AngularFireList<Item[]> {
    this.items = this.db.list('items', ref => ref.orderByChild('value'));
    return this.items
  }

  // Return a single observable item
getItem(key: string): AngularFireObject<Item> {
  const itemPath =  `${this.basePath}/${key}`;
  this.item = this.db.object(itemPath)
  return this.item
}


createItem(item: Item): void  {
  this.items.push(item)                        <--- here is the error
    .catch(error => this.handleError(error))
}


// Update an existing item
updateItem(key: string, value: any): void {
  this.items.update(key, value)
    .catch(error => this.handleError(error))
}

// Deletes a single item
deleteItem(key: string): void {
    this.items.remove(key)
      .catch(error => this.handleError(error))
}

// Deletes the entire list of items
deleteAll(): void {
    this.items.remove()
      .catch(error => this.handleError(error))
}

// Default error handling for all actions
private handleError(error) {
  console.log(error)
}

}

Ошибка в createItem (), и моя консоль выглядит следующим образом

ОШИБКА в src / app / items / shared / item.service.ts (31,19): ошибка TS2345: Аргумент типа 'Item' не может быть назначен параметру типа 'Item []'.Типу «Элемент» не хватает следующих свойств из типа «Элемент []»: длина, всплывающее, push, concat и еще 26.

Ответы [ 2 ]

1 голос
/ 21 апреля 2019

AngularFire2, который вы использовали, работает с наблюдаемыми. прочитайте документацию AngularFire2, пожалуйста. Теперь ваша проблема в том, что элементы являются наблюдаемыми, а не массивами, поэтому вы пытаетесь выдвинуть значения неправильного типа, также если вы пытаетесь передать в базы данных, это не способ сделать это, и снова вы должны прочитать документацию и узнать, как работает Angularfire2

0 голосов
/ 21 апреля 2019

Попробуйте назначить Observable в ngOnInit (). Что-то вроде

ngOnInit(){
this.items = this.db.list('items', ref => ref.orderByChild('value'))
}

...