Angular 8 - 在 PUT 调用中修改 request.body 中的 属性 时拦截器抛出错误
Angular 8 - interceptor throwing error when a property in request.body is modified in PUT calls
我有一个拦截器,它在将 request.body
的主体解析到服务器之前对其进行一些更改。
如果正在进行 HTTP POST 调用,它工作正常。但是,相同的代码在 HTTP PUT 调用中中断。
在 PUT 调用中,正文的所有属性都变成了 read-only
,并且显示了图像中的错误。
错误图片如下:
这里是代码截图:
您可以将只读数据存储到局部变量中
private modifyBody(body: any, property: string, value: string) {
let tempProperty = property;
let tempValue = value;
let tempBody = body;
tempBody[tempProperty] = tempValue.replace(/\s*$/, "");
return tempBody;
}
上述问题的解决方案对我有用:
我将 runtimeChecks 对象值更改为 false,因为 ngRx 不允许我修改该对象,而这正是我对 PUT 调用所做的。
EffectsModule.forRoot([AuthEffects]),
StoreModule.forRoot(reducers,
{ metaReducers,
runtimeChecks: {
strictStateImmutability: false,
strictActionImmutability: false,
}
}
),
我有一个拦截器,它在将 request.body
的主体解析到服务器之前对其进行一些更改。
如果正在进行 HTTP POST 调用,它工作正常。但是,相同的代码在 HTTP PUT 调用中中断。
在 PUT 调用中,正文的所有属性都变成了 read-only
,并且显示了图像中的错误。
错误图片如下:
这里是代码截图:
您可以将只读数据存储到局部变量中
private modifyBody(body: any, property: string, value: string) {
let tempProperty = property;
let tempValue = value;
let tempBody = body;
tempBody[tempProperty] = tempValue.replace(/\s*$/, "");
return tempBody;
}
上述问题的解决方案对我有用: 我将 runtimeChecks 对象值更改为 false,因为 ngRx 不允许我修改该对象,而这正是我对 PUT 调用所做的。
EffectsModule.forRoot([AuthEffects]),
StoreModule.forRoot(reducers,
{ metaReducers,
runtimeChecks: {
strictStateImmutability: false,
strictActionImmutability: false,
}
}
),