parametros - angular2: cómo copiar un objeto en otro objeto
pasar datos entre componentes angular 5 (6)
Como se sugirió antes, la forma limpia de copiar en profundidad los objetos que tienen objetos anidados en su interior es mediante el uso del método cloneDeep de lodash.
Para Angular, puedes hacerlo así:
Instalar lodash con yarn add lodash
o npm install lodash
.
En su componente, importe cloneDeep
y utilícelo:
import * as cloneDeep from ''lodash/cloneDeep'';
...
clonedObject = cloneDeep(originalObject);
Solo se agregan 18kb a su compilación, bien vale la pena por los beneficios.
También he escrito un artículo aquí , si necesita más información sobre por qué usar cloneDeep de lodash.
¿Por favor ayudarme para copiar un objeto en otro objeto usando angular 2?
En angular, usé angular.copy () para copiar un objeto y perder la referencia de un objeto antiguo. Pero, cuando usé el mismo en angular 2 obtengo un error por debajo de:
Error: angular no está definido.
Loadsh es la biblioteca estándar universal para copiar cualquier objeto en copia profunda. Es un algoritmo recursivo. Es comprobar todo y copia para el objeto dado. Escribir este tipo de algoritmo llevará más tiempo. Es mejor aprovechar el mismo.
Puede hacer esto en Angular con ECMAScript6 usando el operador de propagación:
let copy = {...myObject};
Solución
Angular2 desarrollado sobre la base de tecnologías modernas como TypeScript y ES6. Así que solo puedes hacer let copy = Object.assign({}, myObject)
.
Asignación de objetos - buenos ejemplos.
Para objetos anidados : let copy = JSON.parse(JSON.stringify(myObject))
let copy = Object.assign({}, myObject). as mentioned above
pero esto no funcionará para objetos anidados. Asi que una alternativa seria
let copy =JSON.parse(JSON.stringify(myObject))
let course = {
name: ''Angular'',
};
let newCourse= Object.assign({}, course);
newCourse.name= ''React'';
console.log(course.name); // writes Angular
console.log(newCourse.name); // writes React
Para objetos anidados podemos usar bibliotecas de terceros, para copiar objetos en profundidad. En caso de lodash, use _.cloneDeep ()
let newCourse= _.cloneDeep(course);