Swe*_*tha 51 typescript angular
请帮助我使用角度2将对象复制到另一个对象?
在角度我使用angular.copy()将对象复制到旧对象的松散引用.但是,当我使用相同的角度2得到以下错误:
错误:未定义角度.
Ank*_*nka 35
let copy = Object.assign({}, myObject). as mentioned above
Run Code Online (Sandbox Code Playgroud)
但这不适用于嵌套对象.所以另一种选择
let copy =JSON.parse(JSON.stringify(myObject))
Run Code Online (Sandbox Code Playgroud)
您可以使用spread运算符在Angular中使用ECMAScript6执行此操作:
let copy = {...myObject};
Run Code Online (Sandbox Code Playgroud)
let course = {
name: 'Angular',
};
let newCourse= Object.assign({}, course);
newCourse.name= 'React';
console.log(course.name); // writes Angular
console.log(newCourse.name); // writes React
Run Code Online (Sandbox Code Playgroud)
对于嵌套对象,我们可以使用第三方库来深度复制对象。如果是 lodash,请使用 _.cloneDeep()
let newCourse= _.cloneDeep(course);
Run Code Online (Sandbox Code Playgroud)
如前所述,使用lodash的cloneDeep方法深复制内部具有嵌套对象的对象的简单方法。
对于Angular,您可以这样操作:
使用yarn add lodash或安装lodash npm install lodash。
在您的组件中,导入cloneDeep并使用它:
import * as cloneDeep from 'lodash/cloneDeep';
...
clonedObject = cloneDeep(originalObject);
Run Code Online (Sandbox Code Playgroud)
它仅增加了18kb,值得物有所值。
如果您需要更多关于为何使用lodash的cloneDeep的见解,我也在这里写了一篇文章。
| 归档时间: |
|
| 查看次数: |
86756 次 |
| 最近记录: |