Angular FormGroup禁用具有无效childern的父级

时间:2018-02-28 19:52:00

标签: angular forms validation disabled-input formgroups

在Angular中使用Reactive Form,Form Group时, 和动态加载子控件。

父控件已禁用且其中一个孩子无效的情况 - 使整个表单无效 - 即使父级已禁用。 我希望当一个控件被禁用并且它包含子控件时 所有子控件都被禁用,状态为DISABLED。 因此,表单有效性将忽略已禁用的父级,并且表单将是有效的。 事实并非如此。

请告知。

1 个答案:

答案 0 :(得分:1)

子控制器是否是动态加载的,并且您是否将它与Material一起使用,那么它们仍然没有修复,在提交表单时子错误不会传播到父表单时出现mat-error。

一般情况下如果您使用的是反应式表单,您可以获取父表单并向其添加验证错误,方法是订阅表单eventChange并测试子错误,或者创建ValidatorFn并添加自定义验证器子控件,如果发生错误,他们可以在父表单上设置错误

示例:子控制器验证功能:

 passwordVerifyTest(): ValidatorFn {
    return (control: AbstractControl): ValidationErrors | null => {
      const verifyPassword = control.value;
      if (verifyPassword === 'error') {
        control.parent.setErrors({'formInvalid': true});    
        return {passwordInavlid: true};
      }

      return null;
    };
  }