【发布时间】:2018-10-16 14:42:17
【问题描述】:
我已将我的 Angular 应用程序从版本 5 升级到 6,并且我从以下代码中收到此错误。
const request = this.evidenceService.get().map((res) => res.data)
.catch(error => Observable.of(null));
“可观察”类型上不存在属性“地图”。
【问题讨论】:
我已将我的 Angular 应用程序从版本 5 升级到 6,并且我从以下代码中收到此错误。
const request = this.evidenceService.get().map((res) => res.data)
.catch(error => Observable.of(null));
“可观察”类型上不存在属性“地图”。
【问题讨论】:
在 RXJS v6 中,操作符链接已转换为使用 .pipe(),您应该遵循 recommended migration path for RXJS。此外,catch 运算符已重命名为 catchError。
现在应该这样做:
const request = this.evidenceService.get().pipe(
map((res) => res.data)),
catchError(error => Observable.of(null))
);
【讨论】:
根据https://www.academind.com/learn/javascript/rxjs-6-what-changed/
过去
import 'rxjs/add/operator/map'
myObservable
.map(data => data * 2)
.subscribe(...);
现在
import { map } from 'rxjs/operators';
myObservable
.pipe(map(data => data * 2))
.subscribe(...);
【讨论】:
This solved my problem 这是代码:
import { map } from "rxjs/operators";
**********************************************示例**下面********************************************
getPosts(){
this.http.get('http://jsonplaceholder.typicode.com/posts')
.pipe(map(res => res.json()));
}
}
【讨论】:
npm install --save rxjs-compatimport { Observable, Subject } from 'rxjs'; import 'rxjs/add/operator/map'; import 'rxjs/add/operator/catch';
使用
.pipe(map((res) => res.data))
而不是
.map((res) => res.data)
【讨论】: