angular - angular2:如何將物件複製到另一個物件
請幫助我使用 Angular 2 將物件複製到另一個物件中?
在 Angular 中,我使用 angular.copy() 將對象複製到舊對象的鬆散引用。但是,當我在 Angular 2 中使用相同的方法時出現以下錯誤:
錯誤:angular 未定義。
答案#1
解決方案
Angular2 是在 TypeScript 和 ES6 等現代技術的基礎上開發的。
所以你可以直接做 let copy=Object.assign({}, myObject)。
Object assign - 很好的例子。
對於巢狀物件:let copy=JSON.parse(JSON.stringify(myObject))
答案#2
如上所述:
let copy = Object.assign({}, myObject);
但這對嵌套物件不起作用。因此,一個替代方法是:
let copy = JSON.parse(JSON.stringify(myObject));
答案#3
如前所建議,對於內部包含嵌套對象的對象進行深拷貝的乾淨方法是使用 lodash 的 cloneDeep 方法。
對於 Angular,你可以這樣做:
使用 yarn add lodash 或 npm install lodash 安裝 lodash。
在你的組件中,導入 cloneDeep 並使用它:
import * as cloneDeep from 'lodash/cloneDeep';
...
clonedObject = cloneDeep(originalObject);
這只會在你的建置中增加 18kb,非常值得這些好處。
我也在這裡寫了一篇文章,如果你需要更多關於為什麼使用 lodash 的 cloneDeep 的見解。
答案#4
你可以在 Angular 中使用 ECMAScript6 的擴展運算子來做到這一點:
let copy = {...myObject};
