表单组验证器
FormGroup validator
如何将验证器添加到包含表单控件的表单组。
我有这个。
users.forEach(e => {
console.log(e);
this.filasValidator.push(new FormGroup({
dia: new FormControl('0')
},
[Validators.required, Validators.min(1)]
));
});
console.log(this.filasValidator.controls[0].invalid);
FilasValidator 是一个 FormArray
在模板中 html 我有这个
<ng-template formArrayName="filas"
#inputTemplate
let-value="value"
let-row="row"
let-column="column"
let-rowIndex="rowIndex">
<label [formGroupName]="rowIndex" class="pya-cell">
<small class="text-muted d-block d-lg-none">{{ column.name }}</small>
<!--REVISAR VALUE, DA ERROR DE REASIGNACION -->
<input
(input)="editHour(rowIndex, column.prop, $event)"
formControlName="dia"
[ngClass]="{'is-invalid': filasValidator.controls[rowIndex].invalid}"
type="number"
value="{{ value }}"
class="number text-center w-50 form-control light"
/>
</label>
</ng-template>
很难解释,但是看一下我有一个table,里面有一周的几天,到那几天我必须放一个formcontrol,但是至少如果行必须是有效的1 条记录大于 0。
这就是为什么我需要在 formcontrols
之外进行验证
我试过了
this.filasValidator.push(new FormGroup({
lunes: new FormControl('0', Validators.min(1)),
martes: new FormControl('0', Validators.min(1)),
miercoles: new FormControl('0', Validators.min(1)),
jueves: new FormControl('0', Validators.min(1)),
viernes: new FormControl('0', Validators.min(1))
},
[Validators.required]
));
但我需要 Validators.min 在 FormControls 之外。
编辑:
我做了这个改变,制作了一个自定义验证器并放入 FormGroup 来验证所有字段
export class OpponentDetailsComponent implements OnInit {
objFormGroup = this.formBuilder.group(
{
test: [null],
test2: [null]
},
{ validators: [this.validatorArray()] }
);
constructor(private formBuilder: FormBuilder) {}
ngOnInit(): void {}
validatorArray(): ValidatorFn {
return (group: FormGroup) => {
for (let key of Object.keys(group.controls)) {
if (group.controls[key].value > 0) return null;
}
return { min: 1 }
};
}
}
原回答:
您可以像在 FormControl 中放置验证器一样在 FormGroup 中放置验证器,如下所示:
new FormGroup({dia: new FormControl('0')}, [Validators.required])
如何将验证器添加到包含表单控件的表单组。
我有这个。
users.forEach(e => {
console.log(e);
this.filasValidator.push(new FormGroup({
dia: new FormControl('0')
},
[Validators.required, Validators.min(1)]
));
});
console.log(this.filasValidator.controls[0].invalid);
FilasValidator 是一个 FormArray
在模板中 html 我有这个
<ng-template formArrayName="filas"
#inputTemplate
let-value="value"
let-row="row"
let-column="column"
let-rowIndex="rowIndex">
<label [formGroupName]="rowIndex" class="pya-cell">
<small class="text-muted d-block d-lg-none">{{ column.name }}</small>
<!--REVISAR VALUE, DA ERROR DE REASIGNACION -->
<input
(input)="editHour(rowIndex, column.prop, $event)"
formControlName="dia"
[ngClass]="{'is-invalid': filasValidator.controls[rowIndex].invalid}"
type="number"
value="{{ value }}"
class="number text-center w-50 form-control light"
/>
</label>
</ng-template>
很难解释,但是看一下我有一个table,里面有一周的几天,到那几天我必须放一个formcontrol,但是至少如果行必须是有效的1 条记录大于 0。 这就是为什么我需要在 formcontrols
之外进行验证我试过了
this.filasValidator.push(new FormGroup({
lunes: new FormControl('0', Validators.min(1)),
martes: new FormControl('0', Validators.min(1)),
miercoles: new FormControl('0', Validators.min(1)),
jueves: new FormControl('0', Validators.min(1)),
viernes: new FormControl('0', Validators.min(1))
},
[Validators.required]
));
但我需要 Validators.min 在 FormControls 之外。
编辑:
我做了这个改变,制作了一个自定义验证器并放入 FormGroup 来验证所有字段
export class OpponentDetailsComponent implements OnInit {
objFormGroup = this.formBuilder.group(
{
test: [null],
test2: [null]
},
{ validators: [this.validatorArray()] }
);
constructor(private formBuilder: FormBuilder) {}
ngOnInit(): void {}
validatorArray(): ValidatorFn {
return (group: FormGroup) => {
for (let key of Object.keys(group.controls)) {
if (group.controls[key].value > 0) return null;
}
return { min: 1 }
};
}
}
原回答:
您可以像在 FormControl 中放置验证器一样在 FormGroup 中放置验证器,如下所示:
new FormGroup({dia: new FormControl('0')}, [Validators.required])