打字稿保留了对象初始状态的副本

时间:2017-03-22 04:55:58

标签: angular typescript

我正在处理angular2 typescript项目,我只是想将对象的键重置为''在调用save()函数之后,示例在

之下
export class Events{
    event:any={ name : '', date : '',.........};
    eventOriginal=this.event;

    save(){

      //save(this.event)

      //after save, reset value to initial state

      this.event=this.eventOriginal;

    }

  }

但是在console.log(this.event)中没有清除该值,两个对象都是相同的。我也尝试从构造函数赋值, 那么,在打字稿中重置对象键的正确方法是什么?

2 个答案:

答案 0 :(得分:1)

将对象分配给另一个对象时,只分配引用。

快速修复

使用spread

克隆对象
export class Events{
    event={ name : '', date : '',.........};
    eventOriginal= {...this.event};

答案 1 :(得分:1)

步骤eventOriginal=this.event;只会在javascript中指定 参考

应使用Object.assign()方法复制所有可枚举的自有属性的值。像

eventOriginal = Object.assign({}, this.event);

然后再

this.event= Object.assign({}, this.eventOriginal);