Как создать глубокую копию в угловом 2, я попытался использовать let newObject = Object.assign({}, myObject)
, но все же myObject
отражает все изменения, сделанные в newObject.Создайте глубокую копию в угловой 2
ответ
Просто используйте следующую функцию:
/**
* Returns a deep copy of the object
*/
public deepCopy(oldObj: any) {
var newObj = oldObj;
if (oldObj && typeof oldObj === "object") {
newObj = Object.prototype.toString.call(oldObj) === "[object Array]" ? [] : {};
for (var i in oldObj) {
newObj[i] = this.deepCopy(oldObj[i]);
}
}
return newObj;
}
Попробуйте использовать Lodash.js. Потому что угловой 2 не имеет метода глубокой копии. для справок см: https://lodash.com/docs#cloneDeep
или Вы можете использовать эту функцию Javascript
var copy = Object.assign({}, myObject);
Считаете ли вы, что включение lodash только для этой функции является разумным? Чтобы добавить 2 номера, вы должны установить math.js? Как бы вы продолжали добавлять случайные сторонние библиотеки для каждой тривиальной задачи, с которой вы столкнулись? – Azarus
, поэтому я дал второй вариант –
я знаю, но это не так печально .. Пожалуйста, обратитесь к документации: Предупреждения для глубокого Clone Для глубокого клонирования, мы должны использовать другие альтернативы, поскольку Object.assign() копирует свойство значения. Если исходное значение является ссылкой на объект, оно копирует только это ссылочное значение. https://developer.mozilla.org/en/docs/Web/JavaScript/Reference/Global_Objects/Object/assign – Azarus
- 1. Создайте глубокую копию в C#
- 2. Создайте глубокую копию массива C++
- 3. Создайте глубокую копию словаря без импорта копии
- 4. Сделайте глубокую копию словаря
- 5. JQuery продлить глубокую копию
- 6. Создать глубокую копию записи?
- 7. Как сделать глубокую копию?
- 8. сделать глубокую копию в Java
- 9. Array.push выполняет глубокую копию вместо неполную копию
- 10. Выполняет ли Enumerable.Repeat() глубокую копию?
- 11. Cache.get() возвращает глубокую копию элемента?
- 12. Как сделать глубокую копию массива?
- 13. Как сделать глубокую копию LpVariables
- 14. Как сделать глубокую копию BitmapDrawable?
- 15. Как сделать глубокую копию OWLOntology
- 16. Как вручную создать глубокую копию
- 17. Итератор дает мне глубокую копию?
- 18. Сделайте глубокую копию с клоном
- 19. Как сделать глубокую копию очереди в python
- 20. Как сделать глубокую копию в javascript?
- 21. Когда задание делает глубокую копию в Python?
- 22. Как сделать глубокую копию в Objective-C?
- 23. Как сделать глубокую копию InputStream в Java
- 24. как сделать глубокую копию моего списка
- 25. Как сделать «глубокую» копию функции-Javascript
- 26. Progressbar: как создать глубокую копию исходного объекта
- 27. JS: Есть ли Object.assign() создает глубокую копию или неполную копию
- 28. Составляет ли listIterator.next() глубокую копию или мелкую копию?
- 29. Создает ли goroutine глубокую копию или мелкую копию?
- 30. Выполняет ли Job (Конфигурация conf) мелкую копию или глубокую копию?
Я считает его проблема машинопись не angular2. исправьте меня, если я ошибаюсь –
Вы имеете в виду глубокую копию или мелкую копию? http://stackoverflow.com/questions/184710/what-is-the-difference-between-a-deep-copy-and-a-shallow-copy –
@SurajRao ok теперь я тоже смущен, я просто хочу сбросить мой объект к состоянию по умолчанию, когда моя работа выполняется с этим объектом. Чтобы сделать это, мне нужно сохранить эту копию по умолчанию, но когда я вношу изменения, все остальные копии также меняются. Как это предотвратить? –