Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angular/27.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Angular:将类型字符串返回到catchError中,但具有不同类型的HTTP_Angular_Typescript_Rxjs - Fatal编程技术网

Angular:将类型字符串返回到catchError中,但具有不同类型的HTTP

Angular:将类型字符串返回到catchError中,但具有不同类型的HTTP,angular,typescript,rxjs,Angular,Typescript,Rxjs,我的Observable中的返回类型有问题。在我的服务中,当我尝试将字符串放入catchError时,我的foo()方法的返回类型出现错误 服务台 foo():可观察的{{ 返回(“错误”); }) ); } httpService.ts postSomething():可观察{ 返回这个.httpClient.request('post','url',{body}); } 错误说明: foo(): Observable<string | ObjModel> { foo():可

我的Observable中的返回类型有问题。在我的服务中,当我尝试将字符串放入
catchError
时,我的
foo()
方法的返回类型出现错误

服务台

foo():可观察的{{
返回(“错误”);
})
);
}
httpService.ts

postSomething():可观察{
返回这个.httpClient.request('post','url',{body});
}
错误说明:

foo(): Observable<string | ObjModel> {
foo():可观察{
问题是我只想返回一个字符串,否则我的
foo()
实现会返回一个错误,告诉我它需要一个字符串或一个objModel


感谢您的帮助。

问题是,如果没有错误,它将不会调用
catchError
,并将返回实际的
observatable
。因此您还需要处理这种情况。

如果没有错误,您的foo()函数将返回

Observable<ObjModel>
可观察
类型,因此不能声明要返回的foo()函数

foo(): Observable<string>
foo():可观察
键入。

您的函数
foo()
必须管理两种不同的情况

  • http调用中没有错误,因此它返回由
    postSomething()
    返回的任何内容,您将其声明为可观察的
  • http调用中发生错误,因此它返回您在
    catchError
    中编码的内容,即
    可观察的
    ,因为您返回的
    of('error')正好是发出
    字符串的
    可观察的
    `
  • 因此
    foo()
    可以返回
    可观察的
    可观察的
    ,即返回
    可观察的
    。这就是编译器抱怨的原因

    Observable<ObjModel>
    
    foo(): Observable<string>