Angular8:拦截http响应时出错

问题描述 投票:0回答:3

我正在尝试使用角度拦截器将所有HttpResponse拦截为

return next.handle(request).pipe(
      map((event: HttpEvent<any>) => {
        if (event instanceof HttpResponse) {
          // do stuff with response and headers you want
          event.body = event.body.data || event.body;
          console.log('event--->>>', event);
        }
        return event;      
      })
    );

但是打字稿给出了错误

ERROR in src/app/shared/interceptors/auth.interceptor.ts(35,17): error TS2540: Cannot assign to 'body' because it is a read-only property.

我该怎么办?

注意:使用Object.assign克隆对象仍然会给新对象带来相同的错误。

angular typescript angular-http-interceptors
3个回答
1
投票

body对象的event属性是只读的,您不能重新定义/重新分配它。您可以做的是将事件复制到新创建的事件中,修改该事件的主体,然后返回该对象。


1
投票

您不能像这样重新分配变量:


0
投票

最后使用event.clone方法解决了

© www.soinside.com 2019 - 2024. All rights reserved.