Reputation: 973
I have a checkbox list. When the user selects save, the checked items will be removed and placed in the saved tab which I have included as well. I have managed to get the functionality down for removing an item, just not sure how to check if it's checked then remove said item. Thanks
HTML
<ion-content class="checks">
<div [ngSwitch]="messages">
<ion-list active *ngSwitchCase="'received'">
<ion-item>
<ion-label>Select All</ion-label>
<ion-checkbox (click)="checkAll()" [(ngModel)]="selectedAll" ></ion-checkbox>
</ion-item>
<ion-item *ngFor="let rmessage of rmessages; index as i">
<ion-label>{{rmessage.text}}</ion-label>
<ion-checkbox [checked]="selectedAll" [(ngModel)]="singleChecked.checked" ></ion-checkbox>
</ion-item>
<button ion-button full (click)="save($index)" >Save</button>
</ion-list>
<ion-list radio-group *ngSwitchCase="'sent'">
<ion-list-header>Saved Messages</ion-list-header>
<ion-item>
<p>Saved message here</p>
</ion-item>
</ion-list>
</div>
</ion-content>
TypeScript
import { Component } from '@angular/core';
import { TranslateService } from '@ngx-translate/core';
import { NavController, PopoverController, ViewController, ToastController } from 'ionic-angular';
@Component({
selector: 'page-messages',
templateUrl: 'messages.html'
})
export class MessagesPage {
selectedAll: boolean = false;
messages: string = 'messages';
findIndex: any;
singleChecked: boolean = false;
rmessages: any[] = [
{ text: 'This is a test message.' },
{ text: 'This is a second test message.' },
{ text: 'This is a third test message.' }
]
constructor(public navCtrl: NavController, public popoverCtrl: PopoverController, private toastCtrl: ToastController) {
this.messages = 'received';
}
ionViewDidLoad() {
}
checkAll(){
console.log(this.messages.length)
if(this.selectedAll){
this.selectedAll = true
}
else {
this.selectedAll = false
}
}
save(index){
this.rmessages.splice(
this.rmessages.indexOf(index), 1)
}
}
Upvotes: 2
Views: 1651
Reputation: 1759
There are couple of modifications required :- Your rMessages model needs to be more intelligent
rmessages: any[] = [
{ text: 'This is a test message.' , selected:false},
{ text: 'This is a second test message.', selected:false },
{ text: 'This is a third test message.', selected:false } ]
Then inside your ngFor
<ion-checkbox [(ngModel)]="rmessage.selected" ></ion-checkbox>
</ion-item>
In the selectall use loop through rmessages using foreach or something and set selected to true or false
In Save
use rmessages.filter and get selected items and save it in saved tab
rmessages.filter(function (x) { return x.selected;}).map(function(y){ return y.text;});
then set rmessages to rmessages.filter of unselected items
rmessages = rmessages.filter(function (x) { return !x.selected;}
Upvotes: 1