Angular-2:将一个对象复制到另一个对象

时间:2016-09-27 05:12:10

标签: angular

我想将我的类对象复制到temp对象。

类属性:

export class PageModel {       
    AppID: any = null;
    ParentID: any = null;
    Type: any = null;
    Order: any = null;
    IsEnabled: boolean = false;
    View: any = null;
    Toolbars: any = null;
    Attachments: any = null;
} 

我的初始对象:

pageModel : PageModel =new PageModel();
pageModel.Type='New';
pageModel.Order=1;

现在我想将此更新的对象分配给任何临时对象,此临时对象将以形式分配为模型,因此仅在“保存”按钮上点击我想更新我的主要对象。

我只需要帮助,如何将主要对象复制到临时对象。

2 个答案:

答案 0 :(得分:3)

tempObject = Object.assign({}, tempObject, pageModel);

这将创建一个新对象,为其分配tempObject的所有属性,然后将pageModel的所有属性分配给它。

答案 1 :(得分:0)

亚历山大的答案非常适合这个问题。但有些情况下,它不能像

那样正常工作

{ a: 0 , b: { c: 0}};

所以你可以使用,它也适用于深度克隆

tempObject = JSON.parse(JSON.stringify(pageModel));

请参阅下面的示例:

let obj1 = { a: 0 , b: { c: 0}};
  let obj2 = Object.assign({}, obj1);
  console.log(JSON.stringify(obj2)); // { a: 0, b: { c: 0}}

  obj1.a = 1;
  console.log(JSON.stringify(obj1)); // { a: 1, b: { c: 0}}
  console.log(JSON.stringify(obj2)); // { a: 0, b: { c: 0}}

  obj2.a = 2;
  console.log(JSON.stringify(obj1)); // { a: 1, b: { c: 0}}
  console.log(JSON.stringify(obj2)); // { a: 2, b: { c: 0}}

  obj2.b.c = 3;
  console.log(JSON.stringify(obj1)); // { a: 1, b: { c: 3}}
  console.log(JSON.stringify(obj2)); // { a: 2, b: { c: 3}}

  // Deep Clone
  obj1 = { a: 0 , b: { c: 0}};
  let obj3 = JSON.parse(JSON.stringify(obj1));
  obj1.a = 4;
  obj1.b.c = 4;
  console.log(JSON.stringify(obj3)); // { a: 0, b: { c: 0}}

有关详细信息,请访问此link