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,
        } 
    }
),