Как сделать ионный-флажок множественного выбора значения в ионном 3
<div *ngIf="testList.length > 0">
<ion-item *ngFor="let member of testList">
<ion-label>{{member?.testName || 'N/A'}}</ion-label>
<ion-checkbox color="dark" [(ngModel)]="member.checked"></ion-checkbox>
</ion-item>
</div>
[{testID: 1, testName: " test1", testAmount: "500", testDescription: ""},
{testID: 2, testName: " test2", testAmount: "500", testDescription: ""},
{testID: 3, testName: "dgdfgd", testAmount: "150", testDescription: ""},
{testID: 4, testName: "UricAcid", testAmount: "200", testDescription: ""}]
<button (click)="gettstdata()">Done</button>
Как получить все значения чекбокса, такие как multi select при нажатии на кнопку Done
3 ответа:
<div *ngIf="testList.length > 0"> <ion-item *ngFor="let member of testList"> <ion-label>{{member?.testName || 'N/A'}}</ion-label> <ion-checkbox color="dark" (click)="selectMember(member)" [(ngModel)]="member.checked"></ion-checkbox> </ion-item> </div> <button ion-button (click)="checkAll()">Done</button>
В ts:
testList: any = [ {testID: 1, testName: " test1", checked: false}, {testID: 2, testName: " test2", checked: false}, {testID: 3, testName: "dgdfgd", checked: false}, {testID: 4, testName: "UricAcid", checked: false} ] selectedArray :any = []; checkAll(){ for(let i =0; i <= this.testList.length; i++) { this.testList[i].checked = true; } console.log(this.testList); } selectMember(data){ if (data.checked == true) { this.selectedArray.push(data); } else { let newArray = this.selectedArray.filter(function(el) { return el.testID !== data.testID; }); this.selectedArray = newArray; } console.log(this.selectedArray); }
Есть несколько способов достичь этого.
- Вы можете использовать (изменять), я написал вам несколько дополнительных методов, которые вам понадобятся для обычных вещей, когда вы работаете с флажками
<div *ngIf="testList.length > 0"> <ion-item *ngFor="let member of testList"> <ion-label>{{member?.testName || 'N/A'}}</ion-label> <ion-checkbox color="dark" (change)="addCheckbox($event,member.testName)"></ion-checkbox> </ion-item> </div> <button (click)='getCheckedBoxes()'>Done</button>
В вашем .ts file
checked = []; //Adds the checkedbox to the array and check if you unchecked it addCheckbox(event, checkbox : String) { if ( event.target.checked ) { this.checked.push(checkbox); } else { let index = this.removeCheckedFromArray(checkbox); this.checked.splice(index,1); } } //Removes checkbox from array when you uncheck it removeCheckedFromArray(checkbox : String) { return this.checked.findIndex((category)=>{ return category === checkbox; }) } //Empties array with checkedboxes emptyCheckedArray() { this.checked = []; } getCheckedBoxes() { //Do whatever console.log(this.checked); }
Ответ @ Patricio Vargas работает, но вам нужно использовать
(ionChange)
вместо(change)
Также измените условие оператора if с
(event.target.checked)
на(event.checked)
<div *ngIf="testList.length > 0"> <ion-item *ngFor="let member of testList"> <ion-label>{{member?.testName || 'N/A'}}</ion-label> <ion-checkbox color="dark" (ionChange)="addCheckbox($event,member.testName)"></ion-checkbox> </ion-item> </div> <button (click)='getCheckedBoxes()'>Done</button>
В вашем .ts file
checked = []; //Adds the checkedbox to the array and check if you unchecked it addCheckbox(event, checkbox : String) { if ( event.checked ) { this.checked.push(checkbox); } else { let index = this.removeCheckedFromArray(checkbox); this.checked.splice(index,1); } } //Removes checkbox from array when you uncheck it removeCheckedFromArray(checkbox : String) { return this.checked.findIndex((category)=>{ return category === checkbox; }) } //Empties array with checkedboxes emptyCheckedArray() { this.checked = []; } getCheckedBoxes() { //Do whatever console.log(this.checked); }