【问题标题】:Property 'map' does not exist on type 'Observable<DocumentChangeAction<unknown>[]>'. Question'Observable<DocumentChangeAction<unknown>[]>' 类型上不存在属性 'map'。问题
【发布时间】:2020-06-21 23:35:06
【问题描述】:

我遇到了一些错误,我无法弄清楚可能是什么问题。它似乎与 Typescript 和类型有关,但我无法通过安装相关包来修复它。

import { Injectable } from '@angular/core';
import { AngularFirestore } from 'angularfire2/firestore';
import { Subject } from 'rxjs/Subject';

import { Exercise } from './exercise.model';

u/Injectable()
export class TrainingService {
  exerciseChanged = new Subject<Exercise>();
  exercisesChanged = new Subject<Exercise[]>();
  finishedExercisesChanged = new Subject<Exercise[]>();
  private availableExercises: Exercise[] = [];
  private runningExercise: Exercise;

  constructor(private db: AngularFirestore) {}

  fetchAvailableExercises() {
    this.db
      .collection('availableExercises')
      .snapshotChanges()
      .map(docArray => {
        return docArray.map(doc => {
          return {
            id: doc.payload.doc.id,
            name: doc.payload.doc.data().name,
            duration: doc.payload.doc.data().duration,
            calories: doc.payload.doc.data().calories
          };
        });
      })
      .subscribe((exercises: Exercise[]) => {
        this.availableExercises = exercises;
        this.exercisesChanged.next([...this.availableExercises]);
      });
  }
}

我尝试添加:

import 'rxjs/add/operator/map'

我也试过安装:

npm install u/types/rx --save

我在想我可能需要在模块部分添加一些东西,有人知道吗?

【问题讨论】:

  • 这是否构成了minimal reproducible example,某人可以将其放入自己的 IDE 中来为自己演示问题?或者您能否提供一个指向显示这种情况的 Web IDE 的链接?
  • 你应该将 map() 包裹在 .pipe() 中
  • 根据你的 rxjs 版本,你需要引入 map 操作符: import { map } from 'rxjs/operators';并且(就像 Rexhin 提到的)添加管道: .snapshotChanges().pipe(map(docArray..)) l

标签: angular typescript firebase angularfire


【解决方案1】:

如果您使用的是 RXJS 6 或更高版本,则必须使用

.pipe(map(() => {your code}))

您可以在此处查看他们如何编写运算符 https://rxjs-dev.firebaseapp.com/guide/operators

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-09-09
    • 2020-12-18
    • 1970-01-01
    • 2020-04-22
    • 2022-10-16
    相关资源
    最近更新 更多