对象属性本身会更改其值(或看起来是这样)

时间:2019-04-29 11:35:00

标签: angular typescript ngrx

我有一个函数,可以使用.getTime()方法将对象中的属性从Date类型转换为字符串。我可以看到,我的prop和object都很好,但是当我将结果发送到服务器时,它会将我的字符串转换为date对象。

    const temp = this.committeeInfo.aDatesPhases.map((item): IDatesPhases => {
      return {
        ...item,
        sDateStart: String(Number(new Date(item.sDateStart).getTime())),
        sDateEnd: String(Number(new Date(item.sDateEnd).getTime()))
      };
    });
    this.committeeData = {
      ...this.committeeData,
      aDatesPhases: temp
    };
    console.log(this.committeeData.aDatesPhases); // Works fine

    this._store.dispatch(new AddCommitteePending(this.committeeData)); // There aDatesPhases now just dates again

NgRx效果仅将其发送到服务器,而不进行修改,reducer仅用于将状态更改为加载指示。

可能是什么问题,我该如何解决?

1 个答案:

答案 0 :(得分:0)

能否请您尝试使用object.assign更改对象属性,而不是仅仅分配类似的内容,

this.committeeData= Object.assign({}, this.committeeData, {aDatesPhases: temp});

在您的代码中,您正在更改内部对象aDatesPhases的引用,但没有将aDatesPhases的引用更新为this.committeeData。