使用Angular 2在ngFor中的ngModel中设置动态属性

时间:2016-12-23 21:30:57

标签: angular

我有一个组件:

  • " selectedData" :任何
  • "字段" :一组字段。字段是具有以下属性的对象:标签和类型。这些字段描述了对象" selectedData"

示例

selectedData = { Label:"test", IsUsed:false}

fields = [{name:'label', type:'string'},{name:'IsUsed, type:'boolean'}

我正在尝试生成一个用于编辑“selectedData'

”内部数据的表单

以下是我观点的一部分:

 <div class="ui-grid-row" *ngFor="let myField of fields" >
            <div class="ui-grid-col-4"><label for="{{myField.name}}">{{myField.name}}</label></div>
            <div class="ui-grid-col-8"><input pInputText id="{{myField.name}}" [(ngModel)]="this['selectedData.' + myField.name]" /></div>
        </div>

问题在于这一行

[(ngModel)]="this['selectedData.' + myField.name]"

它无法正常工作。 以下是我编辑时的组件的Google Chrome手表: screen capture of my problem

正如您所看到的,Angular2创建了一个名为&#34; selectedData.Label&#34;的对象。而不是使用selectedData现有对象。

有解决方案吗?或者我应该采取不同的方式吗?

THX

1 个答案:

答案 0 :(得分:6)

答案很简单:

[(ngModel)]="selectedData[myField.name]"

如果field.Name的值为'label',则前面的代码等效为:

[(ngModel)]="selectedData.label"

我不知道'[]'可以这样使用。