2016-09-27 114 views
2

我想將我的類對象複製到臨時對象。Angular-2:將一個對象複製到另一個對象

類屬性:

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; 

現在,我想這個更新的對象分配給任何臨時對象,這個臨時對象將指定爲模式中的一種形式爲,因此只能在保存按鈕上單擊我wan ts來更新我的主要對象。

我只需要幫助,如何將主對象複製到臨時對象。

+1

怎麼樣'對象。分配()'? –

+0

它支持雙向綁定,如果我改變在臨時模型也影響主要一個 –

+0

我想念{}作爲參數在Object.assign() –

回答

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

這將創建一個新對象,將tempObject的所有屬性賦值給它,然後將pageModel的所有屬性賦值給它。

+0

謝謝,它的工作原理 –

+0

如果我有上面的單個對象它工作完美,但在對象列表的情況下,Object.assign不起作用,你有什麼想法嗎? –

+0

嘗試'tempList = Object.assign([],tempList,pageModels);' –

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

相關問題