I want to pass employee id on change of ion-option. I tried this, but it is not working, please tell me in case of any mistakes Here is my code:
<ion-label>Employee</ion-label>
<ion-select formControlName="employee">
<ion-option *ngFor="let employee of employees" (ionChange)="selectEmployee($event, employee)">{{ employee.FirstName + " " + employee.MiddleName + " " + employee.LastName }}</ion-option>
</ion-select>
employee.ts file code:
selectEmployee(event, employee)
{
alert(employee.EMP_ID);
}
The correct event to use with ion-option
is ionSelect
.
<ion-option *ngFor="let employee of employees" (ionSelect)="selectEmployee($event, employee)">{{ employee.FirstName + " " + employee.MiddleName + " " + employee.LastName }}</ion-option>
This will be fired when user selects the specific option.
Since you are using reactive form, you can use valueChanges
observable of the formGroup or formControl.
this.yourForm.controls['employee'].valueChanges.subscribe(data=>console.log(data));
This will get called after user clicks OK in the select form.
You can do it using ngModel
to pass values on option selected. Below the object of the option selected is passed via ngModel using a variable named emp
. This variable should be declared in your employee.ts
globally, that you may use it throughout the class.
employee.html
<ion-select [(ngModel)]="emp" interface="popover">
<ion-option *ngFor="let employee of employees" [value]=employee>{{ employee.FirstName + " " + employee.MiddleName + " " + employee.LastName }}</ion-option>
</ion-select>
If you need to do anything when select option changes like populating new design contents based on the option selected or if you need to write any instant logic depending upon the option selected, then you can include ionChange
inside the select
tag and call a function on ts class like below.
<ion-select [(ngModel)]="emp" interface="popover" (ionChange)="onEmpSelected()">
<ion-option *ngFor="let employee of employees" [value]=employee>{{ employee.FirstName + " " + employee.MiddleName + " " + employee.LastName }}</ion-option>
</ion-select>
If you do some logic without the necessity of a global variable, the you can get rid of ngModel
, and do it inside the function alone, then you should use ionSelect
inside the option
tag by removing ionChange
from the select
tag like below.
<ion-select interface="popover">
<ion-option *ngFor="let employee of employees" (ionSelect)="onEmpSelected(employee)">{{ employee.FirstName + " " + employee.MiddleName + " " + employee.LastName }}</ion-option>
</ion-select>
employee.ts
Declare emp
globally and use it wherever necessary if using ngModel
. The whole employee object would be available on your employee.ts
file. And if you are calling the function using ionChange
, write your logic in the function you've called.
onEmpSelected() {
// write your logic here
}
And if you are using ionSelect
without ngModel
, then the selected option data would be available locally to be accessed by the function like below.
onEmpSelected(employee) {
// write your logic here
}
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With