繁体   English   中英

Angular - 如果启用了 http 拦截器并修改响应,http post ReportProgress 将返回未定义的事件

[英]Angular - http post ReportProgress returns undefined event if http interceptor is enabled and modify response

我正在尝试上传文件并希望显示上传进度,但同时我有自定义 HTTP 拦截器来修改我的响应正文,结果它没有得到 HttpEventType.UploadProgress 而不是返回未定义。 但是,如果我删除 HTTP 拦截器,它可以完美运行。

这是我在 CodeSandbox 上创建的代码示例,不确定我缺少什么。

代码示例

我发现了问题 :) 我正在使用地图来修改我的响应并返回我在 if 条件之后忘记返回。 我也在 CodeSandBox 中更新了我的代码示例。

return next.handle(request).pipe(
  map((ev: HttpEvent<any>) => {
    
    if (ev instanceof HttpResponse) {
      // hide my loader
      if (ev.body.status !== undefined) {
        const resp = ev.body as IDefaultResponse;

        if (!resp.status) {
          console.log(resp.errorMessage);
        } else {
          const response = ev.clone({
            body: resp.data
          });

          return response;
        }
      }

    }

    return ev; // << this is what I missed :)
  }),
  catchError((response) => {
    if (response instanceof HttpErrorResponse) {
      switch (response.status) {
        //Error number for example: 500, 400 etc.
        case 0:
          console.log(response.message);
          break;
      }

      return observableThrowError(response);
    }
  })
);

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM