Cannot find control with name: '0'?

Моя форма:

this.formGroup = this.fb.group({ list: this.fb.array([]) });


Добавленеи нового контрола:

private addControl(): void {
        (<FormArray>this.formGroup.controls['list']).push(new FormControl());
    }


Использование:

<form [formGroup]="formGroup" class="dialog_form" autocomplete="off">
        <div class="dialog_form__row" formArrayName="list">
            <app-dropdown-list-children
                *ngFor="let dropdown of formGroup.get('list')['controls']; let i = index"
                [controlIndex]="i"
                [parentFormGroup]="formGroup"
            ></app-dropdown-list-children>
</form>


Компоненет app-dropdown-list-children:

<div [formGroup]="parentFormGroup">
<div class="dropdown" [formGroupName]="controlIndex">
</div>
</div>


После загрузки компонента - создается контрол:

this.addControl();

Почему я получаю ошибку:

Cannot find control with name: '0'?


Если заменить на код шаблона - то все работает:

<form [formGroup]="formGroup" class="dialog_form" autocomplete="off">
        <div class="dialog_form__row" formArrayName="list">
            <input type="text" [formControlName]="i" *ngFor="let dropdown of formGroup.get('list')['controls']; let i = index" /
        </div>
    </form>
  • Вопрос задан
  • 36 просмотров
Пригласить эксперта
Ответы на вопрос 1
mmmaaak
@mmmaaak
Ну получается, что внутри app-dropdown-list-children он в formGroup ищет контрол с именем 0, а там нет такого контрола, в formGroup есть только контрол с именем list, хз возможно внутри этого компонента можно не указывать formGroup, достаточно только контрол прокинуть, и указать его через [formControl]="control", а не через индекс
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы