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

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

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

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


当前回答

我试了上面所有可能的答案,没有一个成功,

我通过简单地重新启动我的IDE,即Visual Studio Code来解决它

希望它能帮助到别人。

其他回答

在rxjs 6中,map操作符的用法已经改变 现在你需要像这样使用它。

import { map } from 'rxjs/operators';
myObservable
  .pipe(map(data => data * 2))
  .subscribe(...);

供参考 https://www.academind.com/learn/javascript/rxjs-6-what-changed/#operators-update-path

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

我试了上面所有可能的答案,没有一个成功,

我通过简单地重新启动我的IDE,即Visual Studio Code来解决它

希望它能帮助到别人。

  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代码,问题解决。

感谢https://github.com/nagamallabhanu

https://github.com/webmaxru/pwa-workshop-angular/issues/2#issuecomment-395024755

封装

管(地图(…))

工作

import { map } from 'rxjs/operators';

courseRef: AngularFireList<any>;
courses$: Observable<any[]>;

this.courseRef = db.list('/tags');
  this.courses$ = this.courseRef.snapshotChanges()
  .pipe(map(changes => {
      return changes.map(c => ({ key: c.payload.key, ...c.payload.val() 
  }));
 }));
 this.courses$.subscribe(res=>{
   console.log(res)
 })