我将我的角度应用程序从版本 5 升级到 6,并从以下代码中收到此错误。
const request = this.evidenceService.get().map((res) => res.data)
.catch(error => Observable.of(null));
属性"map"在类型"可观察"上不存在。
在 RXJS v6 中,运算符链已过渡到使用 .pipe(),您应该遵循推荐的 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(...);
这解决了我的问题 这是代码:
import { map } from "rxjs/operators";
******
getPosts(){
this.http.get('http://jsonplaceholder.typicode.com/posts')
.pipe(map(res => res.json()));
}
}
使用
.pipe(map((res) => res.data))
而不是
.map((res) => res.data)
如果有人在编写以下内容时遇到不支持 json 的错误,
.pipe(map((res) => res.json()))
然后我认为在 angular 的更高版本中删除 .json 是安全的。 它将完美地工作。