Angular 财产';地图';不存在于类型';可观察<;文档更改操作<;事件>;[]>';

Angular 财产';地图';不存在于类型';可观察<;文档更改操作<;事件>;[]>';,angular,firebase,rxjs,angular9,rxjs-observables,Angular,Firebase,Rxjs,Angular9,Rxjs Observables,我的服务文件中出现以下错误,建议更改代码:- 类型“Observable[]>”上不存在属性“map” My Event.ts包含一个带有5个声明参数的接口,这些参数是id:string;代码:字符串;名称:字符串;密码:字符串;波尔卡特:字符串 events.service.ts:- import { Injectable } from '@angular/core'; import { AngularFirestore , AngularFirestoreCollection, An

我的服务文件中出现以下错误,建议更改代码:-

类型“Observable[]>”上不存在属性“map”

My Event.ts包含一个带有5个声明参数的接口,这些参数是id:string;代码:字符串;名称:字符串;密码:字符串;波尔卡特:字符串

events.service.ts:-

import { Injectable } from '@angular/core';
    import { AngularFirestore , AngularFirestoreCollection, AngularFirestoreDocument} from 'angularfire2/firestore';
    import { Event } from '../models/Event';
    import { Observable } from 'rxjs';
    import {map} from 'rxjs/operators';


    @Injectable({
      providedIn: 'root'
    })
    export class EventsService {

      eventsCollection : AngularFirestoreCollection<Event>;
      events: Observable<Event[]>;

      constructor(public afs: AngularFirestore) { 
        this.events = this.afs.collection<Event>('Events').snapshotChanges().map(changes => {
          return changes.map(a => {
            const data = a.payload.doc.data() as Event;
            data.id = a.payload.doc.id;
            return data;
          })
        });
      }

      getEvents()
      {
        return this.events;
      }
    }

我们不能像这样使用RXJS操作符,我们需要将它们封装在管道方法中。请进行以下更改

      constructor(public afs: AngularFirestore) { 
        this.events = this.afs.collection<Event>('Events').snapshotChanges().pipe(
map(changes => {
          return changes.map(a => {
            const data = a.payload.doc.data() as Event;
            data.id = a.payload.doc.id;
            return data;
          })
        }));
      }
构造函数(公共afs:AngularFirestore){
this.events=this.afs.collection('events').snapshotChanges().pipe(
映射(更改=>{
返回changes.map(a=>{
const data=a.payload.doc.data()作为事件;
data.id=a.payload.doc.id;
返回数据;
})
}));
}

您的RxJs版本是什么?从5.5版开始,您需要使用管道:

this.events=this.afs.collection{
返回changes.map(a=>{
const data=a.payload.doc.data()作为事件;
data.id=a.payload.doc.id;
返回数据;
});
})
);
      constructor(public afs: AngularFirestore) { 
        this.events = this.afs.collection<Event>('Events').snapshotChanges().pipe(
map(changes => {
          return changes.map(a => {
            const data = a.payload.doc.data() as Event;
            data.id = a.payload.doc.id;
            return data;
          })
        }));
      }
this.events = this.afs.collection<Event ('Events').snapshotChanges()
    .pipe(
        map(changes => {
            return changes.map(a => {
                const data = a.payload.doc.data() as Event;
                data.id = a.payload.doc.id;
                return data;
            });
        })
    );