我正在做一个离子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为特定乘客选择的人员类型。
问题是,每当我更改一位乘客的离子选择值时,所有其他乘客的值也会随之更改。
这是我的应用程序的图片:
我想说的是,当我将第一个乘客的值从“ 24岁以上的成年人”更改为另一个值时,所有乘客的价值也都发生了变化,这是不希望发生的。
注意:我尝试使用[(ngModel)] =“ Pass.PersonType”绑定离子选择,但是它也不起作用。
注意当离子复选框绑定到数组中的值时,会发生此确切问题
那是什么问题呢?
最佳答案
如在plunker中所见,您正在将同一对象passenger
推入数组:
this.Passengers.push(this.passenger);
这意味着每次您按下乘客时,所有对象都具有相同的参考。因此,对一个对象执行任何操作都会影响其他对象。
可以使用
Object.assign
将passenger
中的值分配给新对象来解决:this.Passengers.push(Object.assign({}, this.passenger));
PLUNKER