formArray的角度清除验证器



如何清除formGroup中formArray的验证器?

这是我的堆叠式

.ts

this.createEstimation = this.fb.group({
name: ['', Validators.required],
surname: ['', Validators.required],
categories: this.fb.array([this.initCat()]),
});
initCat() {
return this.fb.group({
carPartCategory: ['', Validators.required],
carPartSubCategory: ['', Validators.required],
quantity: ['', Validators.required],
comment: [''],
});
}

我尝试过但没有成功:

(this.createEstimation.controls['categories'] as FormArray).controls.forEach(c => c.clearValidators());
(this.createEstimation.controls['categories'] as FormArray).controls.forEach(c => c.updateValueAndValidity());
(this.createEstimation.controls['categories'] as FormArray).clearValidators();
(this.createEstimation.controls['categories'] as FormArray).updateValueAndValidity();
(<FormArray>this.createEstimation.get('categories')).controls.forEach(c => c.setErrors({required: null}));
(<FormArray>this.createEstimation.get('categories')).controls.forEach(c => c.updateValueAndValidity());

我做错了什么?

您可以为每个控件清理验证器,并重置值以更新状态窗体。

clearValidations(): void {
const controlKeys = Object.keys(this.form.controls);
controlKeys.forEach((controlKey) => {
const field = this.form.controls[controlKey];
field.clearValidators();
const currentValue = field.value;
field.setValue("fakeValue");
field.setValue(currentValue);
});
}

我希望我帮过你

最新更新