How to send an object as a parameter in radio group

827 Views Asked by At

I have an array that i make use of it to dispaly

<ion-item (click)="toggleLanguages()">
          Languages
          <ion-icon name="add" item-right *ngIf="languageShow"></ion-icon>
          <ion-icon name="remove" item-right *ngIf="languageHide"></ion-icon>
        </ion-item>
        <div *ngIf="languageHide">

          <!-- All radio's in a radio group -->

          <ion-list radio-group [(ngModel)]="selectedLanguage" (ionChange)="doSomething(language)">
            <ion-item *ngFor="let language of languageArray">
              <ion-label >{{language.language_name}}</ion-label>
              <ion-radio item-left [value]="language"></ion-radio> 
            </ion-item>
          </ion-list>

        </div>

as you can see i am using ionchange to call a funtion

Problems:

when ever my languageHide variables become true my doSomething funtion is triggering

i am sending language object as parameter to my doSomething(language) function but in my console log i am getting undefined for language object.

here is my .ts file

doSomething(languages){

console.log("invoking dosomething");
console.log("checking languages "+ JSON.stringify(languages));//here it is not printing
}

toggleLanguages(){
  console.log("invoking toggleLanguages");
  this.languageShow = !this.languageShow;
  this.languageHide = !this.languageHide;
}

from the above two function i am first invoking toggleLanguages() function once i invoked this funtion my this.languageHide variable becomes true then my (ionChange) function is triggering automatically.

1

There are 1 best solutions below

7
On BEST ANSWER

I don't have any experience with Ionic, but you should be able to pass $event:

(ionChange)="doSomething($event)

You can then print $event in console to see how to extract the data you need:

doSomething(event: any){
    console.log(event);
}

You can't pass language variable because it's not visible in ion-list scope, it is defined below.