我试图从Angular调用一个API,但得到这个错误:

属性“map”在类型“Observable<Response>”上不存在

这个类似问题的答案并没有解决我的问题:Angular 2 beta版。17:属性“map”在类型“Observable<Response>”上不存在。

我使用的是Angular 2.0.0-beta.17。


当前回答

再次讨论这个问题,因为我的解决方案没有列在这里。

我正在用rxjs 6.0运行Angular 6,遇到了这个错误。

下面是我解决问题的方法:

我改变了

map((response: any) => response.json())

简单地成为:

.pipe(map((response: any) => response.json()));

我在这里找到了解决方法:

https://github.com/angular/angular/issues/15548#issuecomment-387009186

其他回答

角9:

 forkJoin([
  this.http.get().pipe(
    catchError((error) => {
      return of([]);
    })
  ),
  this.http.get().pipe(
    catchError((error) => {
      return of([]);
    })
  ),

只需安装rxjs-compat就可以解决这个问题

npm i rxjs-compat --save-dev

然后像下面这样导入它

import 'rxjs/Rx';

如果你使用这个旧的方法来获取路由参数

 this._route.params
        .map(params => params['id'])

为新的rxjs版本更新它

首先, 从RXJS操作符中导入映射。

import { map } from 'rxjs/operators';

第二个添加管道,

   this._route.params.pipe(
            map(params => params['id']))

只需运行NPM install—save rxjs-compat即可修复错误。

这里推荐

使用管道函数中的map函数,它将解决您的问题。 您可以在这里查看文档。

this.items = this.afs.collection('blalal').snapshotChanges().pipe(map(changes => {
  return changes.map(a => {
    const data = a.payload.doc.data() as Items;
    data.id = a.payload.doc.id;
    return data;
  })
})