Мне нужно создать форму для редактирования баланса. Модель позади него - это объект, состоящий из 3-х уровней (как минимум) вложенных объектов. e.g.:
financialData: {
assets: {
total: 0,
currentAssests: {total: 0, detail: 0, otherDetail: 0, ...},
nonCurrentAssets: {total: 0, detail: 0, otherDetail: 0, ...},
...
},
liabilities: {...}
}
Как я могу вычислить различные общие поля при изменении входных данных? Все входные данные привязаны к свойству модели. Я попытался использовать директиву (ngModelChange)="computeTotals()"
, но она вызывается до того, как модель фактически изменится, что делает расчет неверным.
Я пробовал OnChanges
, но сама модель не изменилась, только вложенные свойства.
Самое близкое, что я получил, это использование DoCheck
, но его часто называют. И если я хочу фильтровать, используя this.differ = differs.find({}).create()
, мне нужно создать разницу для всех вложенных объектов.
Какой самый простой способ убедиться, что я вычисляю каждую сумму при изменении одного входа?
Моя форма достаточно большая, около 30 полей и 10 полных полей. На самом деле я не хочу иметь отдельный метод для каждого ввода и хочу легко поддерживать форму.