角度材质2 - 手动将字段/控件设置为无效

时间:2018-04-15 22:19:26

标签: angular angular-material2

我正在做一个嵌套的反应形式。当表单控件位于不同的组件中时,有一个open issue关于自动设置将字段标记为无效(红色)的类。

这些课程为mat-form-field-invalidmat-input-invalid

所以解决这个问题的想法是在单击提交按钮后从FormGroup获取无效控件,并在循环中将它们与无效控件/字段的formControlName匹配,并以编程方式将它们设置为无效< / strong>即可。

我尝试使用formData.form.controls['formControlName'].markAsTouched();和其他类似的&#34;解决方案&#34;我在这里找到并使用谷歌搜索,但其中任何一个都有效。

我该怎么办?

我使用Angular Material 5.2.4。

1 个答案:

答案 0 :(得分:1)

最后,我将CSS错误类添加到嵌套反应形式中无效的字段中:

 this.invalidControls(this.formGroup); //Call it just after submit the form

 //The implementation of the function
 invalidControls(name): void {
    for (const field in name.controls) {
      const control = name.get(field);

      if(control.constructor.name == "FormArray" || control.constructor.name == "FormGroup"){
        this.invalidControls(control); //If the AbstractControl is not a FormControl the funtion will be called again
      }
      else{
        if(control.status === "INVALID"){
          control.markAsTouched({ onlySelf: true });
          control.markAsDirty({ onlySelf: true });
        }
      }
    }
  }

因此,如果您将控件设置为无效,并且为空,则会添加CSS错误类。否则不会。