我试图从Angular调用一个API,但得到这个错误:
属性“map”在类型“Observable<Response>”上不存在
这个类似问题的答案并没有解决我的问题:Angular 2 beta版。17:属性“map”在类型“Observable<Response>”上不存在。
我使用的是Angular 2.0.0-beta.17。
我试图从Angular调用一个API,但得到这个错误:
属性“map”在类型“Observable<Response>”上不存在
这个类似问题的答案并没有解决我的问题:Angular 2 beta版。17:属性“map”在类型“Observable<Response>”上不存在。
我使用的是Angular 2.0.0-beta.17。
当前回答
首先运行安装,如下所示:
npm install --save rxjs-compat@6
现在你需要在service.ts中导入rxjs:
import 'rxjs/Rx';
瞧!问题已经解决了。
其他回答
对于所有遇到此问题的Linux用户,检查rxjs-compat文件夹是否被锁定。我有这个完全相同的问题,我进入终端,使用sudo su给整个rxjs-compat文件夹的权限,它是固定的。假设你进口了
import 'rxjs/add/operator/map';
import 'rxjs/add/operator/catch';
在项目中。原始的.map错误发生在Ts文件中。
在我的情况下,只包括地图和承诺是不够的:
import 'rxjs/add/operator/map';
import 'rxjs/add/operator/toPromise';
我按照官方文档的建议导入了几个rxjs组件,解决了这个问题:
1)在一个app/rxjs-operators中导入语句。ts文件:
// import 'rxjs/Rx'; // adds ALL RxJS statics & operators to Observable
// See node_module/rxjs/Rxjs.js
// Import just the rxjs statics and operators we need for THIS app.
// Statics
import 'rxjs/add/observable/throw';
// Operators
import 'rxjs/add/operator/catch';
import 'rxjs/add/operator/debounceTime';
import 'rxjs/add/operator/distinctUntilChanged';
import 'rxjs/add/operator/map';
import 'rxjs/add/operator/switchMap';
import 'rxjs/add/operator/toPromise';
2)在你的服务中导入rxjs-operator本身:
// Add the RxJS Observable operators we need in this app.
import './rxjs-operators';
在最新的Angular 7中。,你可以简单地尝试:
import { Observable, of } from "rxjs";
import { map, catchError } from "rxjs/operators";
然后你可以使用下面这些方法:
private getHtml(): Observable<any> {
return this.http.get("../../assets/test-data/preview.html").pipe(
map((res: any) => res.json()),
catchError(<T>(error: any, result?: T) => {
console.log(error);
return of(result as T);
})
);
}
查看这个演示以获得更多细节。
我使用的是Angular 5.2,当我使用import 'rxjs/Rx';它抛出我以下lint错误: TSLint:此导入被列入黑名单,改为导入子模块(import-blacklist)
请看下面的截图:
解决方案: 通过只导入我需要的操作符解决了这个问题。例子如下:
import 'rxjs/add/operator/map';
import 'rxjs/add/operator/catch';
因此,解决办法是只导入必要的操作符。
只需在项目的VS Code终端中写入此命令并重新启动项目。
npm install rxjs-compat
你需要通过添加这个来导入map操作符:
import 'rxjs/add/operator/map';