Angular2: как скопировать объект в другой объект
Пожалуйста, помогите мне, чтобы скопировать объект в другой объект, используя angular 2?
В angular я использовал angular.copy(), чтобы скопировать объект, чтобы потерять ссылку на старый объект. Но, когда я использовал то же самое в angular 2, получив ошибку ниже:
Ошибка: angular не определен.
Ответы
Ответ 1
Решение
Angular2, разработанный на основе современных технологий, таких как TypeScript и ES6. Поэтому вы можете просто сделать let copy = Object.assign({}, myObject)
.
Назначить объект - приятные примеры.
Для вложенных объектов:
let copy = JSON.parse(JSON.stringify(myObject))
Ответ 2
let copy = Object.assign({}, myObject). as mentioned above
но это не будет работать для вложенных объектов. SO, альтернативой будет
let copy =JSON.parse(JSON.stringify(myObject))
Ответ 3
Вы можете сделать это в Angular с ECMAScript6, используя оператор распространения:
let copy = {...myObject};
Ответ 4
Как было предложено ранее, чистый способ глубоких копирующих объектов, вложенных в него внутри, заключается в использовании метода lodash cloneDeep.
Для Angular вы можете сделать это следующим образом:
Установите lodash с помощью yarn add lodash
или npm install lodash
.
В вашем компоненте импортируйте cloneDeep
и используйте его:
import * as cloneDeep from 'lodash/cloneDeep';
...
clonedObject = cloneDeep(originalObject);
Это только 18 кб добавлено в вашу сборку, хорошо для выгоды.
Я также написал статью здесь, если вам нужно больше понять, почему использовать lodash cloneDeep.
Ответ 5
let course = {
name: 'Angular',
};
let newCourse= Object.assign({}, course);
newCourse.name= 'React';
console.log(course.name); // writes Angular
console.log(newCourse.name); // writes React
Для вложенного объекта мы можем использовать сторонние библиотеки для глубоких копирующих объектов.
В случае lodash используйте _.cloneDeep()
let newCourse= _.cloneDeep(course);
Ответ 6
Loadsh - это универсальная стандартная библиотека для копирования любых объектов глубокой копии. Это рекурсивный алгоритм. Он проверяет все и делает копию для данного объекта. Написание такого рода алгоритма займет больше времени. Лучше использовать то же самое.
Ответ 7
Попробуй это.
Скопируйте массив:
const myCopiedArray = Object.assign([], myArray);
Скопируйте объект:
const myCopiedObject = Object.assign({}, myObject);
Ответ 8
Object.assign будет работать только на одном уровне ссылки на объект.
Чтобы сделать копию любой глубины, используйте как ниже:
let x = {'a':'a','b':{'c':'c'}};
let y = JSON.parse(JSON.stringify(x));
Если вы хотите использовать какую-либо библиотеку, тогда loadash.js
библиотеку loadash.js
.