Javascript 以角度4/5切换表单验证程序
我希望能够暂时禁用整个表单的验证。注意:我不想禁用实际的表单,但是 我能找到的最接近的方法是手动操作,但对于复杂的表单来说,这是非常尴尬的Javascript 以角度4/5切换表单验证程序,javascript,angular,forms,validation,angular-forms,Javascript,Angular,Forms,Validation,Angular Forms,我希望能够暂时禁用整个表单的验证。注意:我不想禁用实际的表单,但是 我能找到的最接近的方法是手动操作,但对于复杂的表单来说,这是非常尴尬的 this.form = this.formBuilder.group({ email: ['', Validators.compose([Validators.required, Validators.email])], password: ['', Validators.compose([Validators.required, V
this.form = this.formBuilder.group({
email: ['', Validators.compose([Validators.required, Validators.email])],
password: ['', Validators.compose([Validators.required, Validators.minLength(8)
])]
});
有类似的吗
this.form.disableValidators() // ???
可以在组件中使用布尔属性
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中的方法 临时的意思是,当您希望添加验证时,在稍后的时候删除并重新添加,当您想用按钮切换时,基本上是用按钮切换,但我正在尝试切换。三元运算符将立即求值*在创建表单后,动态更正,不幸的是,使用这种方法,您需要不断地重新创建表单。我编辑了我的答案以反映这一点。创建表单后,您必须使用问题中链接的API来执行此操作。:/虽然使用复杂的表单可能很困难,但它是一个很好的API,您可以使用它简化代码。然而,这可能需要一些认真的思考。我想我必须遍历所有嵌套的表单组,然后自己创建一个映射?也许,我想我需要更多的上下文来回答这个问题。比如,父母应该告诉表单何时忽略验证,还是表单本身应该知道何时应该忽略验证?不过,我认为这超出了这个问题的范围。我建议你尽最大努力,如果你遇到麻烦,用Stackblitz或Plunkr复制品单独提出一个问题。祝你好运: