J'ai un tableau d'objets appelé options.
c'est mon code html
<ion-item>
<ion-label>place</ion-label>
<ion-select [(ngModel)]="place" (click)="optionsFn(item);">
<ion-option value="item" *ngFor="let item of options">{{item.name}} {{item.price}}</ion-option>
</ion-select>
</ion-item>
{{salespriceOp}}
{{quantityOp}}
c'est mon code de fichier .ts
product_option_value_idOp
priceOp
salespriceOp
quantityOp
skuOp
nameOp
options = [
{
"product_option_value_id": "45",
"name": "Bangalore Auto",
"quantity": "12",
"sku": "56876",
"price": "100.00",
"salesprice": "50"
},
{
"product_option_value_id": "51",
"name": "Hyderabad Auto",
"quantity": "23",
"sku": "56543",
"price": "200.00",
"salesprice": "60"
},
{
"product_option_value_id": "52",
"name": "Delhi Auto",
"quantity": "14",
"sku": "98767",
"price": "300.00",
"salesprice": "80"
}
];
constructor(public navCtrl: NavController) {
}
optionsFn(item) {//here item is an object
console.log(item);
this.product_option_value_idOp = item.product_option_value_id;
this.priceOp = item.price;
this.salespriceOp = item.salesprice;
this.quantityOp = item.quantity;
this.skuOp = item.sku;
this.nameOp = item.name;
}
je peux invoquer la fonction mais je suis indéfini dans
console.log(item)
Plusieurs choses ont causé cette erreur ensemble. Le premier changement est qu'au lieu d'utiliser l'événement click
comme ceci:
(click)="optionsFn(item);
Vous devez utiliser l'événement ionChange
que Ionic expose comme ceci:
(ionChange)="optionsFn();"
Notez également que puisque vous utilisez la [(ngModel)]="place"
pour lier l'élément select à l'une des propriétés de votre composant, vous n'avez pas besoin d'envoyer l'élément en tant que paramètre, car this.place
Sera l'élément sélectionné élément lorsque l'événement ionChange
est déclenché.
C'est pourquoi votre méthode optionsFn
ressemblerait à ceci:
public optionsFn(): void { //here item is an object
console.log(this.place);
let item = this.place; // Just did this in order to avoid changing the next lines of code :P
this.product_option_value_idOp = item.product_option_value_id;
this.priceOp = item.price;
this.salespriceOp = item.salesprice;
this.quantityOp = item.quantity;
this.skuOp = item.sku;
this.nameOp = item.name;
}
Utilisez (ngModelChange) au lieu de l'événement (click).
(ngModelChange)="optionsFn()"
chaque fois que la valeur du modèle change, ngModelChange appelle automatiquement la fonction relative.
<ion-item>
<ion-label>place</ion-label>
<ion-select [(ngModel)]="place" (ngModelChange)="optionsFn(item)">
<ion-option value="item" *ngFor="let item of options">{{item.name}} {{item.price}}</ion-option>
</ion-select>
</ion-item>