不重置验证器的角

问题描述 投票:0回答:2

角度6:

我有这个表单生成器:

this.issuerDetails = this.formBuilder.group({
  paymentInstruction: ['', [Validators.required]],
  subscriptionTemplateHtml: ['', [Validators.required]],
});

在我删除验证器的路上,并将值/设置为原始值

this.issuerDetailsForm.subscriptionTemplateHtml.clearValidators();
this.issuerDetailsForm.subscriptionTemplateHtml.reset();
this.issuerDetailsForm.paymentInstruction.clearValidators();
this.issuerDetailsForm.paymentInstruction.reset(); 

当我重新启用这些验证器时

this.issuerDetailsForm.subscriptionTemplateHtml.setValidators(Validators.required);
this.issuerDetailsForm.paymentInstruction.setValidators(Validators.required);

用户在提交表单时未正确触发它们

这是为什么?

angular angular6
2个回答
0
投票

当需要重置验证器时,必须运行updateValueAndValidity来重置验证器

所以在所有这些代码之后都添加了这个:

this.issuerDetailsForm.subscriptionTemplateHtml.updateValueAndValidity({ onlySelf: true });
this.issuerDetailsForm.paymentInstruction.updateValueAndValidity({ onlySelf: true });

它运行验证程序并清除所有先前状态

What is updateValueAndValidity


0
投票

下面的代码可能会帮助:

this.issuerDetails = this.formBuilder.group({
  paymentInstruction: ['', [Validators.required]],
  subscriptionTemplateHtml: ['', [Validators.required]],
});

用于重置:

this.issuerDetails.reset();
this.issuerDetails.updateValueAndValidity();
© www.soinside.com 2019 - 2024. All rights reserved.