【问题标题】:Angular not resetting validatorsAngular不重置验证器
【发布时间】:2020-04-04 00:14:49
【问题描述】:

角度 6:

我有这个表单生成器:

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

用这个吸气剂

get issuerDetailsForm() { return this.issuerDetails.controls; }

我删除了验证器,并将值/设置为原始

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);

它们在用户提交表单时没有被正确触发

这是为什么?

【问题讨论】:

  • 我不明白。您正在尝试重置未定义的 issuerDetailsForm。 Intead,您需要重置 issuerDetails。无论如何,updateValueAndValidity() 都会帮助你。 this.issuerDetails.updateValueAndValidity() 将在这里为您提供帮助。
  • 啊,对了,我也有一个吸气剂。用新信息更新了问题

标签: angular angular6


【解决方案1】:

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

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

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

它运行验证器并清除任何先前的状态

What is updateValueAndValidity

【讨论】:

    【解决方案2】:

    以下代码可能会有所帮助:

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

    重置:

    this.issuerDetails.reset();
    this.issuerDetails.updateValueAndValidity();
    

    【讨论】:

      猜你喜欢
      • 2018-06-21
      • 2018-07-10
      • 2018-11-21
      • 1970-01-01
      • 2021-11-01
      • 2022-07-26
      • 1970-01-01
      • 1970-01-01
      • 2016-10-30
      相关资源
      最近更新 更多