Не удается прочитать свойство «push» из неопределенного при использовании angular 5 для хранения данных в базе данных firebase - PullRequest
0 голосов
/ 30 января 2019

Вот что у меня на данный момент:

createPerson(name:any,lname:any,age:any,dept:any){
  this.peopleList.push({
  name: name,
  lname: lname,
  age: age,
  dept: dept
}).then(_person =>{
  this.navCtrl.push(HomePage);
},error=>{console.log(error)});}

1 Ответ

0 голосов
/ 30 января 2019

Этот синтаксис выглядит многообещающе.Обещание может иметь тип Promise<any[]>, но это не значит, что вы можете использовать push() напрямую.

Кроме того, предполагая, что this.peopleList равно any[], его необходимо инициализировать, прежде чем вы сможете выполнить this.peopleList.push().

Наконец, кажется, что вы хотите что-то сделать после this.peopleListполучает новый предмет.Вы должны иметь наблюдаемое / обещание и сделать это в два этапа.Тот, где он добавляет к массиву и возвращает массив с новым значением, а затем использует либо .then, либо .subscribe для выполнения действия после завершения первой задачи.

Редактировать:

export interface AngularFireList<T> {
      query: DatabaseQuery;
      valueChanges(events?: ChildEvent[]): Observable<T[]>;
      snapshotChanges(events?: ChildEvent[]): Observable<SnapshotAction<T>[]>;
      stateChanges(events?: ChildEvent[]): Observable<SnapshotAction<T>>;
      auditTrail(events?: ChildEvent[]): Observable<SnapshotAction<T>[]>;
      update(item: FirebaseOperation, data: T): Promise<void>;
      set(item: FirebaseOperation, data: T): Promise<void>;
      push(data: T): database.ThenableReference;
      remove(item?: FirebaseOperation): Promise<void>;
    }

Это интерфейс AngularFireList.Из быстрого осмотра попробуйте что-то вроде:

// It subscribes to the changes on the list and perform whatever you need upon change. 
// Put it after you initialized the peopleList
this.peopleList.valueChanges.subscribe((data) => {
   this.navCtrl.push(HomePage);
}, error => console.log(error));

// This is adding a new item on the list, which will trigger the subscription above
this.peopleList.push({
  name: name,
  lname: lname,
  age: age,
  dept: dept
});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...