網站搜尋

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};