[英]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.