Скажем, у меня есть следующий массив объектов, дающий имя itemArray;
{
"totalItems": 2,
"items": [
{
"id": 1,
"name": "foo"
},
{
"id": 2,
"name": "bar"
},
]
}
И у меня есть подписка, которая возвращает обновленный результат только из идентификатора 2. Как я могу обновить массив объектов без цикла через весь массив?
Что бы я хотел, это что-то вроде приведенного ниже примера;
updateUser(user){
this.myservice.getUpdate(user.id)
.subscribe(newitem => {
this.updateArray(newitem);
});
}
updateArray(newitem){
this.itemArray.items[newitem.id].name = newitem.name
}
или даже лучше, заменив весь объект;
updateArray(newitem){
this.itemArray.items[newitem.id] = newitem
}
Этот пример, однако, обновляет массив на основе индекса массива. Так как же я вместо этого обновляю на основе newitem.id?
Шаблон, запрошенный в комментарии:
<tr *ngFor="let u of itemsArray.items; let i = index">
<td>{{ u.id }}</td>
<td>{{ u.name }}</td>
<td>
<input type="checkbox" checked="u.accepted" [(ngModel)]="itemsArray.items[i].accepted" (ngModelChange)="updateUser(u)">
<label for="singleCheckbox-{{i}}"></label>
</td>
</tr>