Как получить значение множественного выбора ion-checkbox в Ionic 3 - PullRequest
0 голосов
/ 17 мая 2018
    <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>

Как получить все значения флажка, например, множественный выбор, при нажатии кнопки Готово

Ответы [ 3 ]

0 голосов
/ 17 мая 2018
<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>

в тс:

  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);
}
0 голосов
/ 29 августа 2018

@ Ответ Патрисио Варгаса работает, но вам нужно использовать (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

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);
 }
0 голосов
/ 17 мая 2018

Есть несколько способов добиться этого.

-Вы можете использовать (изменить), я написал вам несколько дополнительных методов, которые вам понадобятся для обычных вещей при работе с флажками

 <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

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);
 }
...