在Angular 4/5中切换形式验证器

时间:2018-01-25 14:44:35

标签: javascript angular forms validation angular-forms

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

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

test_*.py

有什么类似的吗?:

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

1 个答案:

答案 0 :(得分:1)

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

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

然后根据自己的喜好设置属性。

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

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