我在Angular 2中有一个简单的反应表单,并且我的表单没有检测到原始数据表的单元格的变化。html为:
<form [formGroup]="myForm" novalidate (ngSubmit)="onSubmit()">
<p-dataTable [value]="dataMenu" [editable]="true" formArrayName="menu">
<p-column field="menu" header="Menu"></p-column>
<p-column field="price" header="Price" [editable]="true">
<template let-row="rowData" let-i="rowIndex" pTemplate="body">
{{row.price}}
</template>
<template let-row="rowData" let-i="rowIndex" pTemplate="editor">
<input type="number" pInputText [(ngModel)]="row.price" name="test" [ngModelOptions]="{standalone: true}"/>
</template>
</p-column>
</p-dataTable>
.ts文件是:
this.myForm = this.fb.group( { //fb is FormBuilder
menu: this.fb.array([]),
});
this.setDataMenu(this.dataMenu);
...
setDataMenu( menu: Array<any> ) {
const control = <FormArray>this.myForm.controls['menu'];
for ( let m of menu ) {
control.push( this.fb.control(m, validatePrices) );
}
}
function validatePrices( c: FormControl ) {
return ( c.value != null && c.value.price) ? null : {
validatePrices: {
valid: false
}
};
}
问题是,验证只在开始时触发,当"dataMenu“的值更改时,表单不会检测到这种更改。
https://stackoverflow.com/questions/44433086
复制相似问题