在Angular 2使用Http服务的文档页面上,有一个示例。
getHeroes (): Observable<Stuff[]> {
return this.http.get(this.url)
.map(this.extractData)
.catch(this.handleError);
}
我克隆了angular2 webpack初学者项目,并自己添加了上述代码。
我导入观察
使用
import {Observable} from 'rxjs/Observable';
我假设属性可观察的
也被导入(. map
起作用)。查看了rxjs.beta-6的更改日志,没有提到任何关于catch
的内容。
在角8:
//for catch:
import { catchError } from 'rxjs/operators';
//for throw:
import { Observable, throwError } from 'rxjs';
//and code should be written like this.
getEmployees(): Observable<IEmployee[]> {
return this.http.get<IEmployee[]>(this.url).pipe(catchError(this.erroHandler));
}
erroHandler(error: HttpErrorResponse) {
return throwError(error.message || 'server Error');
}
在RxJS 5.5中,catch
操作符现在已不推荐使用。现在,您应该将catchError
操作符与pipe
结合使用。
rxjsv5。5.2是Angular 5的默认依赖版本。
对于您导入的每个RxJS操作符,包括catchError
,您现在应该从“RxJS/operators”导入并使用管道操作符。
import { Observable } from 'rxjs';
import { catchError } from 'rxjs/operators';
...
export class ExampleClass {
constructor(private http: HttpClient) {
this.http.request(method, url, options).pipe(
catchError((err: HttpErrorResponse) => {
...
}
)
}
...
}
请注意,catch
被替换为catchError
,而pipe
操作符用于以与点链接类似的方式组合操作符。
有关更多信息,请参阅Pipable(以前称为lettable)运算符上的rxjs留档。
警告:自Angular 5.5以来,此解决方案已被弃用,请参考下面Trent的答案
=====================
是的,您需要导入运算符:
import 'rxjs/add/operator/catch';
或者通过以下方式导入可观察的:
import {Observable} from 'rxjs/Rx';
但在本例中,您将导入所有运算符。
有关更多详细信息,请参见此问题:
我使用“angular2网页包”和“angular2/表格,可见”,但遇到错误,需要帮助。。 有一个自定义表单验证程序-- 我可以找到文件"/projection_direction/node_modules/rxjs/操作员/DebounceTime.js" 为什么会有这样的错误- 类型“Observable”上不存在属性“debouceTime”。
升级到Angular 6.0和Rxjs到6.0后,我收到以下编译错误:
嗨,我正在使用Angular 2 final和router 3.0。我想过滤从 我想做的是: 可以是instanceOf,或,但我只想要。但是我得到一个错误
我得到这个错误: 属性'toPromise'不存在于类型'观察'. any中
我在尝试创建将keyup事件转换为可观察流时遇到问题。 我正在学习Ng书籍第6版。我被困在一个示例中,在您键入时搜索YouTube视频。当搜索返回时,我们将显示视频缩略图结果列表,以及每个视频的描述和链接。 因此,我们使用observable.from事件:https://github.com/NiLinli/ng-book2-angular-6-r68-code-samples/blob/mas
在使用rxjs的角度2中,我试图将promise转换为可观察的。正如许多在线指南所显示的,我在上使用了。其中抛出错误: Observable的导入方式如下: 尝试导入像其他运算符一样会导致错误: 即使我抑制了typescript错误,它仍然会导致错误: 错误: rxjs回购协议中也报告了类似的问题,但也没有解决方案。