选择标记中的ngModel - 在ngFor

时间:2017-07-26 14:04:01

标签: angular typescript select ngmodel

此示例中的ngModel正在查杀我的浏览器。 任何想法如何获得每个表格单元格模型? (我尝试使用(更改),但它有效 - 但更改了所选值)

<tr *ngFor="let step of procSteps; let i = index;  let first = first; let last = 
                                      last; let even = even; let odd = odd;">

                <td> <p>{{step.position}}</p> </td>

                <td> <p>{{step.name}}</p> </td>

                <td>
                    <select [(ngModel)]="selectedSystemStep[i]">
                        <option *ngFor="let system of systemModuleList" 
                                [value]="system.id">{{system.name}}</option>
                    </select>
                </td> 
</tr>

1 个答案:

答案 0 :(得分:3)

修改

根据您的要求,您还可以向现有数组中的对象添加新属性,该属性将下拉列表中的值存储到每个对象中,如下所示:

<tr *ngFor="let step of procSteps; let i = index">
  <td> <p>{{step.position}}</p> </td>
  <td>
    <select [(ngModel)]="step.newProp">
      <option *ngFor="let system of systemModuleList" 
        [value]="system.id">{{system.name}}</option>
      </select>
  </td> 
</tr>

以上和以下解决方案的演示:http://plnkr.co/edit/24rEpkTYKcXvMUMAyU2B?p=preview

原始答案:

如何存储id的辅助数组?

idArr = []

在模板中,我们使用items的迭代索引并将obj.id存储到相应的索引中:

<div *ngFor="let item of items; let i = index">  
  <select [(ngModel)]="idArr[i]">  
    <option *ngFor="let obj of objects" [value]="obj.id">{{obj.name}}</option>  
 </select>  
</div> 

现在,您已将所有ID存储在idArr中。