2016-04-01 15 views
2

我有一個很難弄清楚如何遍歷一個ControlArray包含在模板Controlgroup秒。在TypeScript中,到目前爲止,我已經創建了ControlArray,並且通過迭代從遠程服務接收的數據,我添加了幾個ControlGroup到陣列。到目前爲止,一切都很好,我可以在控制檯中看到預期的數據結構。Angular2:ControlGroup內ControlArray

在模板中,我有這樣的:

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

...其中categories是ControlArray(其保持在其controls屬性的ControlGroup秒的陣列)。當我離開內部<div>時,我沒有收到錯誤,這表明Angular同意我的看法,即categories.controls確實是一個數組。但只要我重新添加內部<div>(我期望本地變量c是數組中的一個對象),我會在[c in]中收到一條消息「Can not find control'c'」的異常。另外,我嘗試了各種其他的語法方法,但都沒有奏效。除了「無法找到控制...」方法外,我還得到了「無法找到不同的支持對象......」,但這並沒有讓我更進一步。

有關我在做什麼錯的任何提示?

+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

關鍵實際上是在我的Plunkr(https://plnkr.co/edit/UCwXTkcMuBQExA7p38TV)中將'ngControl'改爲'[ngFormControl]'。謝謝。 – BlueM

1

一個錯誤是

ngControlGroup="c" 

不作任何約束力。它將文字c傳遞給ngControlGroup。它應該是:

[ngControlGroup]="c" 

此修復後仍然產生的錯誤似乎是因爲沒有控件。

1

錯誤是通過改變

ngControlGroup="c" 

因爲通過分配cngControlGroup你只是分配值,而不是任何約束力分解成

attr.ngControlGroup="c" 

。但奇怪爲什麼[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'屬性。 Plus:顯示的控制組數量不正確。有任何想法嗎? – BlueM