2016-04-01 3 views
2

Мне сложно определить, как перебирать ControlArray, содержащий Controlgroup s в шаблоне. В TypeScript до сих пор я создал ControlArray, и, итерируя данные, полученные от удаленной службы, я добавил несколько массивов ControlGroup. Все хорошо до этого момента, и я вижу ожидаемую структуру данных в консоли.Angular2: ControlGroup внутри ControlArray

В шаблоне, у меня есть это:

<div *ngFor="#c of categories.controls"> 
    <div ngControlGroup="c"> 
    </div> 
</div> 

... где categories находится в ControlArray (который содержит массив ControlGroup с в его собственности controls). Когда я опускаю внутренний <div>, я не получаю сообщение об ошибке, из-за чего Angular соглашается со мной в том, что categories.controls действительно представляет собой массив. Но как только я снова добавлю внутренний <div> (где я ожидаю, что локальная переменная c будет одним из объектов в массиве), я получаю исключение с сообщением «Не удается найти элемент управления« c »в [c in]». Кроме того, я пробовал различные другие синтаксические подходы, но никто из них не работал. В дополнение к методу «Не могу найти контроль ...» я также получил «Не могу найти отличительный поддерживающий объект ...», но это меня больше не принимало.

Любые подсказки относительно того, что я делаю неправильно?

+2

Не могли бы вы предоставить Plunker? –

+0

Здесь вы найдете: https://plnkr.co/edit/l4r2snv6QLFZl6pM84VC?p=preview – BlueM

ответ

1

ngControlGroup является определение новой контрольной группы. Если я правильно понял ваш вопрос, вы хотите фактически редактировать элементы внутри группы управления внутри массива управления. Проверьте это plnkr: https://plnkr.co/edit/3gM2TuMGBW13HNATUcCO

<div *ngFor="#c of categories.controls; #i = index"> 
     Control group {{i}}: 
    <div> 
     <input type="text" class="form-control m-b" [ngFormControl]="c.controls.title"/> 
     <input type="text" class="form-control m-b" [ngFormControl]="c.controls.id"/> 
     </div> 
    </div> 
+0

Ключ фактически менял 'ngControl' на' [ngFormControl] 'в моем Plunkr (https://plnkr.co/edit/UCwXTkcMuBQExA7p38TV). Благодарю. – BlueM

1

Одна ошибка

ngControlGroup="c" 

, который не делает ничего переплета. Он передает литературу c по адресу ngControlGroup. Должно быть:

[ngControlGroup]="c" 

Ошибки, которые по-прежнему возникают после этого исправления, выглядят из-за отсутствия элементов управления.

1

Ошибка будет решена путем изменения

ngControlGroup="c" 

в

attr.ngControlGroup="c" 

Поскольку назначая c к ngControlGroup вы просто присваивая значение вместо любого связывания. но странно, почему [ngControlGroup] до сих пор производит некоторые error.apart из них здесь работает пример https://plnkr.co/edit/Yw21a1aSivNg4G6gYkhF?p=preview

+0

Спасибо. Я также отредактировал ваш plunk: https://plnkr.co/edit/UCwXTkcMuBQExA7p38TV?p=info. В шаблоне я добавил вызов метода 'dump()', что доказывает, что 'c.controls.title' фактически является' Control', но все же я получаю сообщение об ошибке при попытке использовать это как значение атрибут 'ngControl' в шаблоне. Плюс: количество отображаемых групп управления неверно. Есть идеи? – BlueM

Смежные вопросы