The code below will satisfy your requirements. Change the check box restriction to increase or decrease the number of options that can be selected. Optimization tips are also welcome.
Working demo
component file
import { Component } from '@angular/core';
import { NavController } from 'ionic-angular';
@Component({
selector: 'page-home',
templateUrl: 'home.html'
})
export class HomePage {
selectedIng : Array<any>=[];
numberOfChecks : number=1;
checkBoxLimit : any =1;
constructor(public navCtrl: NavController) {
this.pizzaIng=[
{name : "Pepperoni", checked : false},
{name : "Sasuage", checked : true},
{name : "Mushrooms", checked : false}
];
this.selectedIng=[{name : "Sasuage", checked : true}];
}
updateIng(ing){
if(ing.checked === true){
this.selectedIng.push(ing);
this.numberOfChecks++;
}else{
this.selectedIng=this.pizzaIng.filter((ingr)=>{
console.log(ingr['checked'])
return ingr['checked']===true;
})
this.numberOfChecks--;
}
console.log(this.selectedIng);
console.log(this.numberOfChecks);
}
}
HTML file
<ion-list>
<ion-item *ngFor="let ing of pizzaIng; let i = index">
<ion-label>{{ing.name}}</ion-label>
<ion-checkbox [(ngModel)]="ing.checked" [disabled]="ing.checked==false && numberOfChecks>=checkBoxLimit" (ionChange)="updateIng(ing)"></ion-checkbox>
</ion-item>
</ion-list>
source
share