Øys*_*sen 9 observable rxjs rxjs5 angular
从unix环境运行代码时,我遇到了这个非常烦人的错误.当我在本地运行代码时,这工作正常ng serve,但是当我将代码部署到我的服务器时,此错误会停止所有程序执行:
ERROR TypeError: this.http.get(...).catch is not a function
谷歌的结果表明我应该直接从他们的位置导入rxjs名称空间,而不是通过rxjs/Rx包,但是我得到这个错误.其他结果指出我可能错过了导入rxjs运算符,但它们肯定包含在我的情况下.
我甚至使用DevTools检查了包含的源图,并且操作符包含在浏览器中.
谁能告诉我为什么我会收到这个错误?我正在使用rxjs:^ 5.5.2
这是我的代码.
import { Injectable } from '@angular/core';
import { HttpClient } from '@angular/common/http';
import { Observable } from 'rxjs/Observable';
import 'rxjs/add/operator/catch';
import 'rxjs/add/observable/throw';
@Injectable()
export class MyService {
constructor(private http: HttpClient) {}
all(): Observable<any> {
return this.http.get<any>('url')
.catch(err => this.handleError(err));
}
handleError(error) {
return Observable.throw(error);
}
}
Run Code Online (Sandbox Code Playgroud)
编辑 基于@ Jota.Toledo的评论,我将使用此方法提供代码:
this.myService.all().subscribe(
result => {
this.isLoading = false;
if (result) {
this.clients = result;
}
},
error => this.isLoading = false
);
Run Code Online (Sandbox Code Playgroud)
在订阅中给出两个回调函数,就像在添加运算符之前"在某处使用catch方法"一样?
And*_*M16 12
在rxjs 5.5.2这种情况下,您可以使用lettable运算符解决此问题catchError.你必须从以下方式导入它operators:import { catchError } from 'rxjs/operators/catchError';.一般来说,所有运营商都必须以这种方式进口,同样的事情也是observable如此observable/of.
import { catchError } from 'rxjs/operators/catchError';
import { map } from 'rxjs/operators/map';
all(): Observable<any> {
return this.http.get<any>('url')
.pipe(
map(() => //do stuff),
catchError((error: Error) => {
//
})
)
}
Run Code Online (Sandbox Code Playgroud)
了解更多关于可出租运营商这里.
| 归档时间: |
|
| 查看次数: |
8870 次 |
| 最近记录: |