为什么我不能在我的errorHandler函数中使用throwError?

时间:2019-11-27 22:28:28

标签: angular error-handling

这是我最初的errorHandler方法,可以正常工作且没有错误:

 private handleError(error: unknown) {
    if(error instanceof HttpErrorResponse){
      console.error(error.message);
    }
    return throwError(error);
  }

的调用方式如下:catchError(this.handleError)

但是我想在handleError中包括一些其他参数,所以我将其更改为:

private handleError(error: unknown, operation: string ="") {
 console.log(operation);
 if(error instanceof HttpErrorResponse){
      console.error(error.message);
    }
    return throwError(error);
  }
}

它将被这样称呼:catchError(“ operation name”);

现在我在终端中收到此消息:

类型'Observable'的参数不能分配给类型'(err:any,catch:Observable>)=> ObservableInput'的参数。       类型'Observable'不提供签名'(err:any,catch:Observable>):ObservableInput'的匹配项。

在我的浏览器中:

TypeError: this.selector is not a function
    at CatchSubscriber.error (catchError.js:29)
    at RetryWhenSubscriber.notifyError (OuterSubscriber.js:7)
    at InnerSubscriber._error (InnerSubscriber.js:14)
    at InnerSubscriber.error (Subscriber.js:55)
    at MergeMapSubscriber.notifyError (OuterSubscriber.js:7)
    at InnerSubscriber._error (InnerSubscriber.js:14)
    at InnerSubscriber.error (Subscriber.js:55)
    at Observable._Observable__WEBPACK_IMPORTED_MODULE_0__.Observable.scheduler.schedule.error.error [as _subscribe] (throwError.js:4)
    at Observable._trySubscribe (Observable.js:42)
    at Observable.subscribe (Observable.js:28)

如果我将return语句更改为其他可观察到的值,即使只是of(1),也不会出现任何错误。

在我向handleError签名添加其他参数之前,为什么可以使用类似throwError生成的Observable的方法?

0 个答案:

没有答案