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

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

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

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


当前回答

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

这里推荐

其他回答

如果在导入import 'rxjs/add/operator/map'或import 'rxjs/Rx'后,你也得到了相同的错误,然后重新启动你的visual studio代码编辑器,错误将被解决。

使用管道函数中的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;
  })
})

我也有同样的问题,我使用的是Visual studio 2015,它有一个旧版本的typescript。

升级扩展后,问题得到解决。

下载链接

  import { Injectable } from '@angular/core';
  import { Http } from '@angular/http';
  import 'rxjs/add/operator/map';

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

  constructor(public http: Http) { }

 //access apis Get Request 
 getUsers() {
 return this.http.get('http://jsonplaceholder.typicode.com/users')
  .map(res => res.json());
  }

 }

执行命令

 npm install rxjs-compat 

我只需要导入

 import 'rxjs/add/operator/map';

重新启动vs代码,问题解决。

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

npm i rxjs-compat --save-dev

然后像下面这样导入它

import 'rxjs/Rx';