首页 > 解决方案 > 类型“错误”不匹配签名“(此:Observable<{}>,订阅者:订阅者<{}>):TeardownLogic”

问题描述

我有 angular 5.2.11,但今天我将它更新到 6,所以当我尝试构建时,我收到一个错误说:

TS2345:类型Error参数不可分配给类型参数(this: Observable<{}>, subscriber: Subscriber<{}>) => TeardownLogic。类型Error不提供签名的匹配项(this: Observable<{}>, subscriber: Subscriber<{}>): TeardownLogic

serviceInvoke<R,B>(baseUrl: string, relativeUrl: string, requestMethod: RequestMethod, params: {
  [key: string]: any | any[]
}, body ? : B): Observable<R> {
  const requestOptionsArgs = {
    method: requestMethod,
    params: params,
    body: body
  };
  return this.httpClient.request(baseUrl + relativeUrl, requestOptionsArgs)
    .pipe(
      map((response: Response) => response.json()),
      catchError((httpErrorResponse: Response) => new ErrorObservable(this.getError(httpErrorResponse)))
    );
}

在此处输入图像描述

标签: angular

解决方案


可以肯定的是,map在使用.responseresponse.json()HttpClient

仅在使用Http.

尝试摆脱它。像这样的东西:

serviceInvoke<R,B>(
  baseUrl: string, 
  relativeUrl: string, 
  requestMethod: RequestMethod, 
  params: { [key: string]: any | any[] }, 
  body?: B
): Observable<R> {
  const requestOptionsArgs = {
    method: requestMethod,
    params: params,
    body: body
  };

  return this.httpClient.request(baseUrl + relativeUrl, requestOptionsArgs)
    .pipe(
      catchError((httpErrorResponse: Response) => new ErrorObservable(this.getError(httpErrorResponse)))
    );
}

推荐阅读