Getting selected radio button value, on (ionChange) in radio-group , ionic2

You can use ionSelect event of <ion-radio> to pass the value.

...
  <ion-item>
    <ion-label>{{question.optionA}}</ion-label>
    <ion-radio  value="1" (ionSelect)="mcqAnswer(i,1)"></ion-radio>
  </ion-item>
  <ion-item>
    <ion-label>{{question.optionB}}</ion-label>
    <ion-radio  value="2" (ionSelect)="mcqAnswer(i,2)"></ion-radio>
  </ion-item>
...

In your typescript (.ts) file it will be something like

mcqAnswer(questionID,answer){
...
}

You can pass through $event to your onChange method. E.g.

In your html:

<ion-list radio-group *ngFor="let question of mcqData; let i= index;" (ionChange)="mcqAnswer($event)">
  <ion-list-header>
    {{question.questionText}}
  </ion-list-header>

  <ion-item>
    <ion-label>{{question.optionA}}</ion-label>
    <ion-radio  value="1"></ion-radio>
  </ion-item>

  <ion-item>
    <ion-label>{{question.optionB}}</ion-label>
    <ion-radio  value="2"></ion-radio>
  </ion-item>

  <ion-item>
    <ion-label>{{question.optionC}}</ion-label>
    <ion-radio  value="3"></ion-radio>
  </ion-item>

  <ion-item>
    <ion-label>{{question.optionD}}</ion-label>
    <ion-radio  value="4"></ion-radio>
  </ion-item>
</ion-list>

In your Typescript:

function mcqAnswer(value)
{
   console.log(value);
}

ionic v6: use ngmodel

<ion-radio-group  [(ngModel)]="McAns" *ngFor="let question of mcqData; let i= index;" (ionChange)="mcqAnswer($event)">
  <ion-list-header>
    {{question.questionText}}
  </ion-list-header>

  <ion-item>
    <ion-label>{{question.optionA}}</ion-label>
    <ion-radio  value="1"></ion-radio>
  </ion-item>

  <ion-item>
    <ion-label>{{question.optionB}}</ion-label>
    <ion-radio  value="2"></ion-radio>
  </ion-item>
</ion-radio-group>

on (ionChange)="mcqAnswer($event)"

 mcqAnswer(eve) {
    console.log(this.McAns)
  }

Tags:

Ionic2