angular – Observable .catch不是一个函数
发布时间:2020-12-17 07:31:41 所属栏目:安全 来源:网络整理
导读:从unix环境运行我的代码时,我遇到了这个非常烦人的错误.当我通过ng服务本地运行代码时,这工作正常,但是当我将代码部署到我的服务器时,此错误会停止所有程序执行: ERROR TypeError: this.http.get(...).catch is not a function 谷歌的结果表明我应该直接从
从unix环境运行我的代码时,我遇到了这个非常烦人的错误.当我通过ng服务本地运行代码时,这工作正常,但是当我将代码部署到我的服务器时,此错误会停止所有程序执行:
谷歌的结果表明我应该直接从他们的位置导入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); } } 编辑 this.myService.all().subscribe( result => { this.isLoading = false; if (result) { this.clients = result; } },error => this.isLoading = false ); 在订阅中给出两个回调函数,就像在添加运算符之前“在某处使用catch方法”一样?
在rxjs 5.5.2中,您可以使用lettable运算符解决此问题,在本例中为catchError.您必须从以下运算符导入它:import {catchError} from’rxjs / operators / catchError’;.一般来说,所有运算符都必须以这种方式导入,同样的东西也是可观察的,如observable /.
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) => { // }) ) } 阅读更多关于可租赁操作符here的信息. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |