我有一个表格(反应式)。当用户单击按钮时,新的输入行将添加到表单,但是表单中的某些数据并未得到应有的更新。
该表单位于祖父母视图(enroll-form
),中间子视图(sub-enroll-form
)和孙子视图(sub-enroll-form-row
)中,其中显示{{1 }}。在inputs
中单击按钮时,孙子表单为用户提供了新的输入,以便用户添加新的国家代码,区号,电话号码,分机号等,并且该部分正在顺利进行。
单击按钮后,代码enroll-form.component.html
将数据添加到基础对象addRow()
中,该对象填充了表单(通过member
上的*ngFor
迭代),然后是Angular剩下的了吗。 。 。几乎。
member
在addRow()
enroll-form.component.ts
addRow(targetKey: string) {
let idArray = [];
let newRow = new PhoneRowData().phone;
this.member[targetKey].rowData.forEach((v)=>idArray.push(v.id.ID));
let maxId = idArray.reduce(function(a,b) {return Math.max(a,b);});
newRow.id.ID = maxId + 1;
this.member[targetKey].rowData.push(newRow);
}
(这是显示最终包含在sub-enroll-form-row.component.ts
中的数据的孙组件/视图。
member
问题在于,将新的数据行添加到export class SubEnrollFormRowComponent implements OnInit, OnChanges {
@Input() inputFields; //THE DATA IN `inputFields` IS DERIVED FROM `member`
@Input() form: FormGroup;
formControls={};
objKeys: Array<any> = [];
subKeys: Array<any> = [];
ngOnChanges() {
this.objKeys = Object.keys(this.inputFields);
this.objKeys.forEach((key) => {
this.subKeys = Object.keys(this.inputFields[key]);
this.subKeys.forEach((subkey) => {
let validators = [];
this.templateVal.handleValidation(subkey, validators);
this.formControls[subkey] = new FormControl(this.inputFields[key][subkey], validators);
this.form.addControl(subkey, this.formControls[subkey]);
})
})
. . .
}
(在祖父母中)之后,member
的相应行被正确放置(在Granchild视图中),但是其中一些inputs
中的值不是我所期望的。如inputs
所示,新输入的addRow()
属性应设置为现有ID的最大值+ 1(以自动递增ID)。而是将所有新的ID输入设置为值“ 1”,这是类构造函数给出的值。即使我修改了ID
中的初始值,并验证了调试器/控制台中的修改,但是在模板视图中,这些修改不会被保留。
我需要执行某种“保存更改”操作吗?还是我试图同步进行更改的事实吗?否则,有什么想法为什么即使基础数据集似乎已经被更新,输入值也没有被更新?谢谢!