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

问题描述 投票:1回答:1

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

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

请指教。

angular forms validation disabled-input formgroups
1个回答
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;
    };
  }
© www.soinside.com 2019 - 2024. All rights reserved.