Ошибка типа: changes.payload.docChanges не является функцией в Angular 6, использующей AngularFire2 v5-rc9 - PullRequest
0 голосов
/ 17 мая 2018

Я получаю эту ошибку в последней версии ("angularfire2": "^ 5.0.0-rc.9").Мой код такой же, как в в этом примере Я вижу, что эта ошибка встречается и с другими разработчиками на github , но не нашел никакого решения.Я использую Angular 6 и последнюю версию Chrome.

import { Component } from '@angular/core';
import { AngularFirestore, AngularFirestoreCollection } from 'angularfire2/firestore';
import { Observable } from 'rxjs';
import { map } from 'rxjs/operators';

export interface Shirt { name: string; price: number; }
export interface ShirtId extends Shirt { id: string; }

@Component({
  selector: 'app-root',
  template: `
    <ul>
      <li *ngFor="let shirt of shirts | async">
        {{ shirt.name }} is {{ shirt.price }}
      </li>
    </ul>
  `
})
export class AppComponent {
  private shirtCollection: AngularFirestoreCollection<Shirt>;
  shirts: Observable<ShirtId[]>;
  constructor(private readonly afs: AngularFirestore) {
    this.shirtCollection = afs.collection<Shirt>('shirts');
    // .snapshotChanges() returns a DocumentChangeAction[], which contains
    // a lot of information about "what happened" with each change. If you want to
    // get the data and the id use the map operator.
    this.shirts = this.shirtCollection.snapshotChanges().pipe(
      map(actions => actions.map(a => {
        const data = a.payload.doc.data() as Shirt;
        const id = a.payload.doc.id;
        return { id, ...data };
      }))
    );
  }
}

Ответы [ 2 ]

0 голосов
/ 18 мая 2018

Последние версии AngularFire требуют Firebase 5.0.2+, они изменили docChanges со свойства на функцию. Убедитесь, что вы обновили @firebase/firestore и @firebase/firestore-types в вашем package.json.

0 голосов
/ 17 мая 2018

Angular 6 представил RXJS 6, который изменил способ использования RXJS. Миграционная ссылка здесь . Но Angularfire2 еще не был обновлен до RXJS. Подождите, пока они обновятся. А пока вы можете использовать rxjs-compact и иметь обратную совместимость

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