У меня есть основная форма, в которую встроена подчиненная форма formArray:
Основная форма
initForm() {
this.mainForm = this.formBuilder.group({
label: ['', [Validators.required, Validators.maxLength(this.labelMaxLength)]],
foos: this.formBuilder.array([], [MyCustomValidator])
});
}
Компонент вспомогательной формы
initForm() {
this.subForm = this.formBuilder.group({
id: '',
start: ['1', [Validators.required, Validators.min(1)]],
stop: ['5', [Validators.required, Validators.min(2)]],
});
}
<input nbInput type="number"status="{{ (f.start.errors && f.start.touched) ? 'danger': (!f.start.errors && f.start.touched) ? 'success' : 'basic' }}"
id="start" class="form-control" formControlName="start" />
<div *ngIf="f.start.touched && f.start.errors" class="invalid-feedback d-block">
<div *ngIf="f.start.errors['required']">{{ 'FIELD_REQUIRED' | translate: {field: 'LAYERSTART' | translate} }}</div>
<div *ngIf="f.start.errors['min']">{{ 'MINERROR' | translate: {valuemin: '1' } }}</div>
</div>
//FORM IS INVALID BUT ERRORS ARE NOT DISPLAYED
У меня также есть собственный Валидатор, в котором я устанавливаю такие ошибки:
formArray.controls[index].setErrors({myControlError: true});
formArray.setErrors({ arrayLevelError: true });
И в моей основной форме html
<div>
<div *ngIf="f.foos.errors" class="invalid-feedback d-block">
<div *ngIf="f.foos.errors['arrayLevelError']">BLALA/div> //NOT WORKING
</div>
<ng-container formArrayName="foos" *ngFor="let ctr of foos.controls; let i=index">
<div *ngIf="ctr.errors" class="invalid-feedback d-block">
<div *ngIf="ctr.errors['myControlError']">BLOLO</div>
</div>
<ngx-foo id="foo_{{ i }}" [formControlName]="i" [inErrors]="ctr.errors">
</ngx-foo>
</ng-container>
<div>
Ошибки управления работают, а вот arrayLevelError - нет, кроме того, валидаторы внутри подкомпонент работает (подчиненная форма недействительна), но не отображается.
Как я могу получить к ним доступ для других типов ошибок?
Спасибо за вашу помощь