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

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

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

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


当前回答

只需在项目的VS Code终端中写入此命令并重新启动项目。

npm install rxjs-compat

你需要通过添加这个来导入map操作符:

import 'rxjs/add/operator/map';

其他回答

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

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

下载链接

我也曾犯过同样的错误。一个对我有效的解决方案是在您的服务中添加以下行。Ts文件而不是导入'rxjs/add/operator/map':

import { Observable } from 'rxjs';
import { map } from 'rxjs/operators';

举个例子,我的app。service。ts在调试之后,

import { Injectable } from '@angular/core';
import { HttpClient } from '@angular/common/http';
import { Observable } from 'rxjs';
import { map } from 'rxjs/operators';

@Injectable()
export class AppService {
    constructor(private http: HttpClient) {}
    getData(): Observable<any> {
        return this.http.get('https://samples.openweathermap.org/data/2.5/history/city?q=Warren,OH&appid=b6907d289e10d714a6e88b30761fae22')
        .pipe(map(result => result));
    }
}

angular的新版本不支持.map,你必须通过cmd安装 保存rxjs-compat 通过这个你可以享受老技术。 注意: 不要忘记导入这些行。

import { Observable, Subject } from 'rxjs';
import 'rxjs/add/operator/map';
import 'rxjs/add/operator/catch';

首先运行安装,如下所示:

npm install --save rxjs-compat@6

现在你需要在service.ts中导入rxjs:

import 'rxjs/Rx'; 

瞧!问题已经解决了。

NPM安装rxjs@6 rxjs-compat@6—保存