Angular 4 ngFor在重新映射源数组键时不起作用

时间:2017-07-02 18:08:20

标签: angular

我正在尝试重写用于呈现html select元素的列表,以使其键与列表对象类型的主要标识符匹配。

export class Industry {
  constructor(
    public industryId?: number,
    public code?: number,
    public description?: string
  ) { }
}

以我的形式:

<select formControlName="industryId" class="form-control">
  <option *ngFor="let i of industries" [ngValue]="i.industryId">{{i.description}}</option>
</select>

当我分配从服务中获取的数组时,一切都很好但是当我将其重写为关联数组,因此键与主标识符匹配时,它会呈现一个选项列表,其中包含正确的选项数但没有值。

private getIndustries() {
  this.industryService.getIndustries()
    .subscribe(
      industries => {
        // this works
        this.industries = industries;

        // this does not work
        this.industries = [];
        for (let item of industries) {
          this.industries[item['industryId']] = item;
        }
   });
}

1 个答案:

答案 0 :(得分:0)

JS中没有关联数组概念。你不能马上做到这一点。将其转换为对象数组。在对象中,您可以动态添加键,然后像访问它一样 这个..

例如:

this.industry = [];
    this.obj = {};
    for (let item of industries) {
          this.obj[item['industryId']] = item;
        };
In the view you can use ngFor to iterate get the value as follows...
    this.industry.push(obj);