Reputation: 7724
I have an array of object called options.
this is my html code
<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}}
this is my .ts file code
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;
}
i am able to invoke the function but i am getting undefined in
console.log(item)
Upvotes: 20
Views: 69244
Reputation: 1
In html
<ion-select (ionChange)="optionsFn($event)">
<ion-option *ngFor="let item of options" [value]="item.name">
{{item.price}}</ion-option>
</ion-select>
In .ts
optionsFn(event) {
console.log(event);
}
Upvotes: 0
Reputation: 101
As per my experience insted of (ionChange)="optionsFn();"
we can use the [(ngModel)]="selectVariable"
which can be easily fetch later at the .ts file
Upvotes: 1
Reputation: 7055
You can do like this
<ion-select (ionChange)="itemId = $event.target.value">
<ion-select-option *ngFor="let s of itemIds" value="{{s.id}}">{{s.name}}</ion-select-option>
</ion-select>
OR you can also do like this
<ion-select value="{{itemId}}" [(ngModel)]="itemId">
<ion-select-option *ngFor="let s of itemIds" value="{{s.id}}">{{s.name}}</ion-select-option>
</ion-select>
And in you .ts
file just declare variable itemId
;
Upvotes: 1
Reputation: 981
#id
and (ionChange)="anyFunc()"
<ion-select (ionChange)="anyFunc()" #anyName>
<ion-option value="{{item.id}}" *ngFor="let item of apicall?.items"></ion-option>
</ion-select>
ViewChild
as a Select
type from ionic-angular
import { Select } from 'ionic-angular';
@ViewChild('anyName') theSelectObject: Select;
contructor() { }
anyFunc() {
const theValue = this.theSelectObject.value;
}
and Good luck!
Upvotes: 0
Reputation: 29
Use (ngModelChange) instead of (click) event.
(ngModelChange)="optionsFn()"
whenever the model value changed the ngModelChange will automatically call the relative function.
<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>
Upvotes: 1
Reputation: 44659
There were several things that together caused that error.
The first change there is that instead of using the click
event like this:
(click)="optionsFn(item);
You should use the ionChange
event that Ionic exposes like this:
(ionChange)="optionsFn();"
Also notice that since you use the [(ngModel)]="place"
to bind the select element to one of your component's properties, you don't need to send the item as a parameter, because this.place
will be the selected item when the ionChange
event is triggered.
That's why your optionsFn
method would look like this:
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;
}
Upvotes: 30
Reputation: 13558
Check after making below changes :
// html change
<ion-select [(ngModel)]="gaming" (change)="optionsFn();">
<ion-option [value]="item" *ngFor="let item of options">{{item.name}} {{item.price}}</ion-option>
</ion-select>
//.ts change
optionsFn() {
console.log(this.gaming);
let item = this.gaming;
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;
}
Upvotes: -1