AngularJS tiene angular.copy() para copiar en profundidad objetos y matrices.
¿Angular también tiene algo así?
También puedes usar:
JSON.parse(JSON.stringify(Object))
si está en su alcance, está en cada componente Angular, directiva, etc. y también está en cada entorno de nodo.
A menos que tenga una referencia circular, debería funcionar y disociará efectivamente su referencia variable al objeto original.
Otra opción es implementar tu propia función:
/** * Returns a deep copy of the object */ public static deepCopy(oldObj: any) { var newObj = oldObj; if (oldObj && typeof oldObj === "object") { if (oldObj instanceof Date) { return new Date(oldObj.getTime()); } newObj = Object.prototype.toString.call(oldObj) === "[object Array]" ? [] : {}; for (var i in oldObj) { newObj[i] = this.deepCopy(oldObj[i]); } } return newObj; }Esta pregunta no es un duplicado de ¿Cómo puedo usar angular.copy en angular 2 porque el OP pregunta sobre la copia profunda de objetos? La respuesta vinculada recomienda Object.assign() que no hace una copia profunda.
En realidad, el uso de Angular2 no le impide usar otras bibliotecas como jQuery para la copia profunda de objetos con su función $.clone() o lodash con _.cloneDeep() .
Las bibliotecas más comunes tienen sus tipos disponibles a través de las herramientas CLI de tipos , por lo que incluso al transpilar desde TypeScript puede usar sin problemas lo que desee.
Ver también: ¿Cuál es la forma más eficiente de clonar en profundidad un objeto en JavaScript?