1

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

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

请指教。

4

1 回答 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;
    };
  }
于 2018-03-01T02:10:55.180 回答