如果相关的表单组无效,则Angular 7和表单数组会禁用表单组的按钮,从而产生未定义的错误

时间:2019-03-20 08:38:28

标签: angular angular7 angular-reactive-forms formarray

我有一个带有按钮的每一行生成表单控件的表单数组。

如果表单数组中的相关表单组无效,我需要禁用相关按钮。

按钮为:

<button mat-raised-button color="warn" type="submit" color="warn" (click)="addDist(element, i)">
                <mat-icon>add</mat-icon> Add
</button>

具有数组形式:

this.arrayGroup = new FormGroup({
  distribution: new FormArray(this.dataSource.data.map(x => new FormGroup({
    actual_date: new FormControl('', Validators.required),
    note: new FormControl(''),
    kit: new FormControl('', Validators.required)
  })
  ))
});

因此,在每一行中,我都需要禁用它,直到datekit被填充为止。如果未填写其他按钮,则其他按钮应保持无效。

我尝试过:

<button mat-raised-button color="warn" [disabled]="!arrayGroup.get('distribution')).at(i).valid" type="submit" color="warn" (click)="addDist(element, i)">
                <mat-icon>add</mat-icon> Add
</button>

但出现以下错误:

  

未捕获(承诺):错误:模板解析错误:解析器错误:   位于第32列的意外令牌')'   [!arrayGroup.get('distribution'))。at(i).valid]

然后我尝试:

[disabled]="!arrayGroup.distribution.at(i).valid"

然后我得到了

  

错误TypeError:无法读取未定义的属性'at'   在Object.eval [作为updateDirectives]

1 个答案:

答案 0 :(得分:1)

这是语法错误。您的代码中的括号过多。

这是更新的代码:

[disabled]="!arrayGroup.get('distribution').at(i).valid"