我正在做一个离子2角2和打字稿的应用程序。我想为每个(航班)乘客创建一个ionSelect:

<div *ngFor="let Pass of Passengers; let i=index">
  <ion-item no-lines>
    <h2 item-left>{{'PERSONS'|translate}}</h2>
    <ion-select item-right [(ngModel)]="Passengers[i].PersonType"  placeholder="" (ionChange)="CONSOLES()">
      <ion-option value="Bébé (0-2)"> {{'BABYPERSONTYPE'|translate}}</ion-option>
      <ion-option value="Enfant (2-12)">{{'ENFANTPERSONTYPE'|translate}}</ion-option>
      <ion-option value="Jeune (12-24)">{{'YOUNGPERSONTYPE'|translate}}</ion-option>
      <ion-option value="Adulte plus 24">{{'ADULTPERSONTYPE'|translate}}</ion-option>
    </ion-select>
  </ion-item>


如您所见,我正在从一组对象中装载乘客:乘客,并且在每个这些对象中,我都有一个名为PersonType的值,该值应具有通过ionSelect为特定乘客选择的人员类型。

问题是,每当我更改一位乘客的离子选择值时,所有其他乘客的值也会随之更改。

这是我的应用程序的图片:

javascript - 与数组变量绑定(bind)时,IonSelect和ionCheckBox不起作用-LMLPHP

我想说的是,当我将第一个乘客的值从“ 24岁以上的成年人”更改为另一个值时,所有乘客的价值也都发生了变化,这是不希望发生的。

注意:我尝试使用[(ngModel)] =“ Pass.PersonType”绑定离子选择,但是它也不起作用。

注意当离子复选框绑定到数组中的值时,会发生此确切问题

那是什么问题呢?

最佳答案

如在plunker中所见,您正在将同一对象passenger推入数组:

this.Passengers.push(this.passenger);


这意味着每次您按下乘客时,所有对象都具有相同的参考。因此,对一个对象执行任何操作都会影响其他对象。

可以使用Object.assignpassenger中的值分配给新对象来解决:

this.Passengers.push(Object.assign({}, this.passenger));


PLUNKER

08-27 21:02