Подтвердить что ты не робот

Angular2: как скопировать объект в другой объект

Пожалуйста, помогите мне, чтобы скопировать объект в другой объект, используя angular 2?

В angular я использовал angular.copy(), чтобы скопировать объект, чтобы потерять ссылку на старый объект. Но, когда я использовал то же самое в angular 2, получив ошибку ниже:

Ошибка: angular не определен.

4b9b3361

Ответ 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.