数组模型 - Angular 2

时间:2017-10-23 22:41:39

标签: angular

这是其他帖子Nested Model - Angular 2

的引导

我有一个场景,其中数据对象有多个人,每个人可以有多个地址。当在文本区域中显示选择地址类型完整地址时,在下拉列表中显示地址类型。

<div *ngFor="let persons of data; let i = index">
    <div *ngFor="let person of persons; let j = index">
      <select [ngModel]="selectedAddress[j]" (ngModelChange)="selectedAddress[j] = $event">
        <option *ngFor="let address of person.addresses" [ngValue]="address">
            {{address.type}}
        </option>
      </select>
      <textarea [(ngModel)]="selectedAddress[j].address"></textarea>
    </div>
</div>

每个人都显示在每个div块中。选择div'Person A'的下拉菜单。在div'Person B'中填充textarea。如何处理这种情况?

上一篇文章修复了同一父div中的地址集合问题。 这里的问题是围绕人物收集。当您尝试选择父A中的下拉列表时,也会在父B中填充textarea。

1 个答案:

答案 0 :(得分:1)

你可以有一个二维数组......但考虑做一个重构,以便更清洁的实现。

初始化selectedAddress,如:selectedAddress = [[]],并执行以下操作:

<div *ngFor="let persons of data; let i = index">
<div *ngFor="let person of persons; let j = index">
  <select [ngModel]="selectedAddress[i][j]" (ngModelChange)="selectedAddress[i][j] = $event">
    <option *ngFor="let address of person.addresses" [ngValue]="address">
        {{address.type}}
    </option>
  </select>
  <textarea [(ngModel)]="selectedAddress[i][j].address"></textarea>
</div>
</div>

我不知道exaclty if(ngModelChange)=“selectedAddress [i] [j] = $ event”更新selectedAddress [i] [j],如果没有,selectedAddress [i] [j] .address将崩溃。但我认为如果最后的解决方案有效,那就必须起作用。如果崩溃,请使用空对象控制数组。但我再说一遍,这个解决方案有点棘手。