这个问题以前有人问过,但是我已经尝试了其他人得到的解决方案,但它们对我不起作用。我在这个问题的底部列出了我尝试过的解决方案。
在我的ionic2应用程序中尝试多个导入变体后,我仍然收到错误,
Property 'map' does not exist on type 'Observable<Object>'.
尝试使用 RXJS 中的 map
函数时。以下是我的代码。
import { HttpClient } from '@angular/common/http';
import { Injectable } from '@angular/core';
import { Observable } from 'rxjs/Observable';
import 'rxjs/add/operator/map';
/*
Generated class for the LevelTestDataProvider provider.
See https://angular.io/guide/dependency-injection for more info on providers
and Angular DI.
*/
@Injectable()
export class LevelTestDataProvider {
constructor(public http: HttpClient) {
console.log('Hello LevelTestDataProvider Provider');
}
getRemoteData() {
this.http.get('PUT JSON URL HERE').map((res: Response) => res.json()).subscribe(data => {
console.log(data);
})
}
}
我尝试了以下导入语句:
import { Observable } from 'rxjs/Observable';
import 'rxjs/add/operator/map';
import { Observable } from 'rxjs'; // causes an error
import 'rxjs/add/operator/map';
import { Observable } from 'rxjs/Observable';
import 'rxjs/Rx';
import { map } from "rxjs/operators"; // causes an error
import 'rxjs/Rx';
此外,我确保我的打字稿版本是最新的。它当前版本为 2.6.2。我仔细检查了我的package.json
文件是否反映了这个版本。
更新 1:我的 RxJS 版本是 5.5.2
从版本 v5 开始,我们应该使用
管道运营商
此外,res.json()
在Angular的新HttpClient中不起作用。res
已经是解析的 json 对象。
import { map } from 'rxjs/operators';
import { Observable } from 'rxjs/Observable';
this.http.get('PUT JSON URL HERE')
.pipe(map((res: Response) => {
return res.json(); // will not work using HttpClient
return res;
))
.subscribe(data => {
console.log(data);
})