angular - clearvalidators() 未按预期与 Angular 中的表单重置方法一起工作

标签 angular

我试图在单选按钮更改事件上清除表单值以及表单中的验证消息,但当表单控件为空时它仍然显示验证消息

 changePaymentType(type) {
    this.myForm.reset();
    this.myForm.clearValidators();
    this.myForm.updateValueAndValidity();

form image after reset and clearvalidator

这是执行reset()和clearvalidator()方法后得到的输出。

如果我在每个控件上的 for 循环中执行代码,它确实可以工作,但随后验证会停止在表单控件上工作。

 <input type="text" class="form-control" autocomplete="off" placeholder="Card Name"
               formControlName="cardName">
        <div class="font-red" *ngIf="(f.cardName.touched || f.cardName.dirty || validateCard)  && f.cardName.errors">
          {{getValidationErrors(f.cardName.errors)}}
        </div>

这就是表单控件的html代码

最佳答案

您缺少更新验证器后需要调用的 updateValueAndValidity() 函数。此外,建议清除控件的验证器而不是整个 formGroup;

this.myForm.get('cardName').clearValidators();
this.myForm.get('cardName').updateValueAndValidity();

关于angular - clearvalidators() 未按预期与 Angular 中的表单重置方法一起工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/67882825/

相关文章:

angular - Typescript 函数声明使用 new()

Angular 2-ngModel 中的更改未反射(reflect)在下拉列表中

javascript - FBQ(Facebook 事件)与 Angular 4

javascript - 如何检查javascript数组是否包含具有特定值的属性,如果是则返回true

javascript - Angular 2 多个模块,名称仅在外壳上不同

angular - 如何在另一个 Angular 应用程序中导入 Angular Web 组件

angular - 将字符串转换为数字 Angular 2 单向绑定(bind)

javascript - 错误 : No component factory found for GoogleCardLayout2

angular - 在项目 'production' 中找不到配置 'my-lib'

angular2 表单 + 异步验证 + ChangeDetectionStrategy.OnPush = 没有 View 刷新?