Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/469.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 以角度4/5切换表单验证程序_Javascript_Angular_Forms_Validation_Angular Forms - Fatal编程技术网

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复制品单独提出一个问题。祝你好运: