Angular 7 и массивы форм отключают кнопку группы форм, если связанная группа форм недопустима, выдает ошибку undefined - PullRequest
1 голос
/ 20 марта 2019

У меня есть массив форм, генерирующий элементы управления формой для каждой строки с кнопкой.

Мне нужно отключить связанную кнопку, если связанная группа форм в массиве форм недопустима.

Кнопка:

<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)
  })
  ))
});

Так что в каждой строке мне нужно отключить ее, пока не заполнятся date и kit.Другие кнопки должны оставаться недействительными, если их формы не заполнены.

Я пытался:

<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>

Но получил ошибку:

Uncaught (в обещании): Ошибка: Ошибки синтаксического анализа шаблона: Ошибка синтаксического анализатора: неожиданный токен ')' в столбце 32 в [! ArrayGroup.get ('distribution')). ​​At (i) .valid]

Затем я попытался:

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

И я получил:

ОШИБКА TypeError: Невозможно прочитать свойство 'at' из неопределенного в Object.eval [as updateDirectives]

1 Ответ

1 голос
/ 20 марта 2019

Это синтаксическая ошибка. В вашем коде слишком много скобок.

Вот обновленный код:

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