В настоящее время у меня есть угловая форма, такая как
<form>
Name: <input name="name" [(ngModel)]="data.name"><br>
Age: <input name="age" [(ngModel)]="data.age"><br>
City: <input name="city" [(ngModel)]="data.city"><br>
<button (click)='update()'>
</form>
После обновления я бы хотел иметь объект, содержащий только что измененные поля.Просто для быстрого и грязного решения я достиг своей потребности, используя Proxy
, который выглядит более или менее как ниже (с присвоением компоненту data
равным changeTracker.proxy
):
class ChangeTracker {
proxy;
changed;
constructor(initialTarget = {}) {
this.changed = {};
this.proxy = new Proxy(initialTarget, {
get(target, key) {
return target[key];
},
set(target, key, val) {
target[key] = val;
this.changed[key] = val;
return true;
}
});
}
}
Так что в конце концов я могу сделатьт. е. REST PUT
http.put('/some/api/type', { objectId, ...changeTracker.changed });
Мне не удалось найти ни SO-ответа, ни внешнего учебного пособия, напрямую касающегося проблемы получения набора изменений из формы.Интересно, каков угловой способ достижения этого - лучше всего было бы избежать ненужных шаблонов и в то же время искать какое-либо разумное решение.