2017-01-25 4 views
0

У меня есть массив объектов, который я преобразовываю перед отправкой его на контроллер.Объект назначает глубокое копирование причину проблемы

Угловая код для копирования следующим образом:

sourceObjArray: SourceObject[] = [..]; 
    targetObjArray: SourceObject[]= []; 
    targetObjArray = object.assign(sourceObjArray); 
    // when i change target object it also cause source object to change 
    transformSourceObject(targetObjArray) 

Ниже, кажется, работает:

targetObjArray = object.assign({}, sourceObjArray); 
// when i call transform it does not effect source object :) 
transformSourceObject(targetObjArray) 

, но это вызывает следующую проблему.

Could not read document: Can not deserialize instance of java.util.ArrayList out of START_OBJECT token at [Source: [email protected]; line: 1, column: 1]; nested exception is com.fasterxml.jackson.databind.JsonMappingException: Can not deserialize instance of java.util.ArrayList out of START_OBJECT token at [Source: [email protected]; line: 1, column: 1] 

Мой метод контроллера подписи:

@RequestMapping(.., method=RequestMethod.POST) 
public save(@RequestBody List<Object>, BindResult bindResult){} 
+0

Почему вы думаете, что это копия ? ['Object.assign'] (https://developer.mozilla.org/en/docs/Web/JavaScript/Reference/Global_Objects/Object/assign) изменяет свой первый аргумент. – jonrsharpe

+0

Я просто хочу сделать так, как в угловом1 угловом.копии, который глубоко скопирует объект. можете ли вы предложить? –

+0

Пожалуйста, добавьте код для 'SourceObject' на вопрос –

ответ

0

со ссылкой на следующий пост, нашел следующий фрагмент кода рабочего

How can i use angular.copy in angular 2

duplicateObject = <YourObjType> JSON.parse(JSON.stringify(originalObject)); 
+2

Затем вы должны отметить это сообщение как дубликат, а не скопируйте ответ. Это основной материал для пользователя 20k +! – jonrsharpe

Смежные вопросы