У меня есть служба Angular CLI, которая возвращает модель данных, как показано ниже.
Проблема, с которой мне нужна помощь, - это массив mergeLines и способ сравнения с локальными данными и обновления любых изменений для отправки обратно для сохранения.
Мне нужно в основном управлять, сравнивая локальные данные с данными на стороне сервера на основе этого набора правил:
Пользователь имеет возможность удалить dataStep, поэтому, если модель сервера для mergeLines содержит dataStepId, которого нет на локальном компьютере, - мы можем удалить это из данных, отправляемых на сервер, так как Пользователь решил удалить линия
Пользователь может изменить имя dataStep, чтобы сделать его более удобным для пользователя - поэтому, если у серверной и локальной модели есть dataStep с совпадающим dataStepID, но с разными именами, тогда значение серверной стороны используется в модели, которую нужно отправить назад.
Местные данные хранятся, как показано ниже, и содержат:
- stepId (dataStepId для модели сервера)
- endpointName (имя на модели сервера)
- тип (не используется в модели сервера)
- itemName (не используется в модели сервера)
// Local Data
this.incomingStepsData = this.data.incomingSteps.map((item) => ({
..._.pick(item.attributes.dataStepInfo, ['stepId', 'endpointName']),
type: _.get(item.attributes, 'type'),
itemName: _.get(item.attributes.attrs['.itemName'], 'text') || (_.get(item.attributes.dataStepInfo, 'endpointName') + "" + (_.get(item.attributes.dataStepInfo, 'stepId'))
)}));
// Server Model
{
"timeoutInSeconds": 60,
"mergeLines": [
{
"dataStepId": 1000,
"name": "Name 1",
"id" : 1
},
{
"dataStepId": 1001,
"name": "Name 2",
"id" : 2
},
{
"dataStepId": 1002,
"name": "Name 3",
"id" : 3
}
],
"id": 1001
}
Спасибо за любую помощь