Angular 5 - 在 HttpInterceptor 中操作 HttpErrorResponse 的错误 属性

Angular 5 - Manipulating HttpErrorResponse's error property in HttpInterceptor

我有来自其余 api 的自定义错误消息正文 JSON。

{  
   "status":400,
   "url":"/api/abc",
   "message":"Custom Error Message"
}

我想将它作为对象获取到订阅的错误范围内。 我尝试在每次使用 HttpInterceptor 响应后将其转换为对象。但是 HttpErrorResponse 是只读的。我怎样才能在服务中获得这个对象?

intercept(request: HttpRequest<any>, next: HttpHandler): Observable<HttpEvent<any>> {
        return next.handle(request).do((event: HttpEvent<any>) => {}, (err: any) => {
            if (err instanceof HttpErrorResponse) {
                // Here trying convert to object from json
                err.error = <ErrorMessageBody>JSON.parse(err.error);
            }
        });
    }

err.error 已经翻译成 JSON.

这对我有用 catch:

intercept(req: HttpRequest<any>, next: HttpHandler): Observable<HttpEvent<any>> {
    return next.handle(req)
        .catch((err: HttpErrorResponse) => {
            return Observable.throw(err.error);
        });
}