javascript - Toggle Angular 4/5 中的表单验证器

标签 javascript angular forms validation angular-forms

我希望能够暂时禁用整个表单的验证。注意:我不想禁用实际的表单...

我能找到的最接近的是手动 remove and add them as described here ,但这对于复杂的表单来说相当尴尬。

this.form = this.formBuilder.group({
      email: ['', Validators.compose([Validators.required, Validators.email])],
      password: ['', Validators.compose([Validators.required, Validators.minLength(8)
  ])]
});

有类似的吗?

this.form.disableValidators() // ???

最佳答案

您可以在组件中使用 bool 属性。

validationEnabled = true;

然后,当您定义控件时,

emailValidators = Validators.compose([Validators.required, Validators.email]);
passwordValidators = Validators.compose([Validators.required, Validators.minLength(8);

this.form = this.formBuilder.group({
      email: ['', this.validationEnabled ? emailValidators : null],
      password: ['', this.validationEnabled ? passwordValidators : null]
});

并根据需要设置属性。

这种方法的一个缺点是,当您想要切换时,您需要重建表单。

如果您想在创建表单后执行此操作,则需要使用上面链接的 API 中的方法 https://angular.io/api/forms/AbstractControl#setValidators

关于javascript - Toggle Angular 4/5 中的表单验证器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48445555/

相关文章:

javascript - 如何在 JavaScript 中只为 Chrome 增加 margin-right 值?

javascript - 访问 Json 对象

javascript - list 图标第 1 行不是,列 : 1, 意外标记

angular - Ngx Bootstrap 弹出框一次只显示一个弹出框

forms - jQuery:使用 "live"方法阻止然后不阻止表单提交

javascript - 导入的常量未定义

javascript - Angular2,doe 的 EventEmitter 需要 zone.run?

javascript - 第 3 方添加到日历下拉列表未显示在子页面中

javascript - 如何在javascript中检查提交按钮是否被点击

ruby-on-rails - Rails 5.1.2 - form_with 未在 html 中显示 data-remote ="true"