angular - Angular 6:“Observable”类型上不存在属性“catch”'?
问题描述
我正在将我的应用程序升级到Angular 6。我正在从Angular 4升级,但下面的代码在 Angular 6 中导致错误,它在 Angular 4 中运行良好。
我得到的错误:
“typeof Observable”类型上不存在属性“of”
错误:“Observable”类型上不存在属性“catch”
我应该如何解决这些错误?
private authInterceptor(observable: Observable<Response>): Observable<Response> {
return observable.catch((error, source) => {
if (error.status == 401) {
this.router.navigateByUrl('/login');
return Observable.of();
} else {
return Observable.throw(error);
}
});
}
解决方案
由于您标记了您的问题 rxjs6,我假设升级到 Angular 6 包括升级到 rxjs6。在这种情况下,它不起作用,因为可观察对象上的方法现在是可以使用 pipe() 应用的独立运算符。此外,进口也发生了变化。有关更多详细信息,请参阅迁移指南。
使用 rxjs6 它应该看起来像这样:
import { Observable, EMPTY, throwError } from 'rxjs';
import { catchError } from 'rxjs/operators';
private authInterceptor(observable: Observable<Response>): Observable<Response> {
return observable.pipe(
catchError( err => {
if (err.status == 401) {
this.router.navigateByUrl('/login');
return EMPTY;
} else {
return throwError(err);
}
})
);
}
推荐阅读
- amazon-web-services - 使用 CloudFront 签名 URL 使用 Imagemagick 编码图像
- mac-catalyst - 在 Mac Catalyst 中以编程方式在选项卡中排列窗口
- postgresql - Kafka 连接 Debezium Postgres Cloud SQL
- vb.net - 超过 24 小时的日期和时间格式
- python - Scrapy广泛抓取返回错误“filedescriptor out of range in select()”
- c# - 如何在 C# 控制台中显示二叉树
- mysql - 如何处理对mysql数据库的异步调用
- java - 如何更新进度条
- arrays - 跨两个数组做数学运算
- python - 是否可以为不和谐的机器人嵌套命令?