2016-05-04 51 views
1

對不起,但我不知道如何正確描述此問題。在循環內更改ngModel綁定

我想輸出一個窗體,通過對象鍵數組循環,並根據對象具有多少個屬性顯示輸入字段。

例如:

<form [ngFormModel]="dataForm" (ngSubmit)="save()"> 
    <fieldset> 
     <legend>Data</legend> 
     <div class="form-group" *ngFor="#key of dataKeys" 
      <label>{{ key }}</label> 
      <input 
       [(ngModel)]="data." + key 
       class="form-control" 
       ngControl="key" 
       #key="ngForm"> 
     </div> 
    </fieldset> 
</form> 

而且我希望它來評價這樣的:

<form [ngFormModel]="dataForm" (ngSubmit)="save()"> 
    <fieldset> 
     <legend>Data</legend> 
     <div class="form-group"> 
      <label>id</label> 
      <input 
       [(ngModel)]="data.id" 
       class="form-control" 
       ngControl="id" 
       #id="ngForm"> 
     </div> 
     <div class="form-group"> 
      <label>score</label> 
      <input 
       [(ngModel)]="data.score" 
       class="form-control" 
       ngControl="score" 
       #score="ngForm"> 
     </div> 
     ... 
    </fieldset> 
</form> 

我知道,它不能正常工作像我有它在此刻的模板,但我無法弄清楚如何使它正常工作。 我想也許一個自定義的方向將是一個解決方案,但即使通過搜索所有的谷歌搜索結果,我可以找到這個我不能使它的工作。

非常感謝!

回答

1

這應該做你想要什麼:

[(ngModel)]="data[key]" 
+0

哇哦......它的工作。非常感謝!這很讓人尷尬,我沒有想到訪問對象屬性的替代語法。但我怎麼用「ngControl」和ngForm分配的變量呢? –

+1

對於模板變量,您必須使用靜態名稱'#xxx'必須按原樣添加到模板中,否則無法生成這些名稱。我沒有在源代碼中找到'ngControl'被讀取的地方,以及是否可以像'[ngControl] =「xxx +'yyy'」'那樣動態生成它。去嘗試一下。 –

+0

好吧,非常感謝,我認爲我可以與之合作! –