angular - Ionic Tøm data
Jeg bruker ion-select for å velge alternativ og filtrere det, men problemet er at når jeg velger ett alternativ fungerer filtreringen fint, men når jeg velger for andre gang filtrerer den data fra det første filterresultatet og ikke fra de faktiske dataene.
<ion-item >
<ion-label style="text-align: right;" dir="rtl" >קטגוריה</ion-label>
<ion-select dir="rtl" [(ngModel)]="selectedOption" (ionChange)="print()">
<ion-option *ngFor="let categ of cat2" dir="rtl" [value]="categ.id" >{{categ.title}}</ion-option>
</ion-select>
</ion-item>
print() {
console.log(this.selectedOption);
this.data = this.data.filter(category => category.categories[0].id === this.selectedOption);
}
dette er bare eksempeldata
{
{
"title": "111"
"category": "252"
},
{
"title": "111"
"category": "242"
},
{
"title": "111"
"category": "212"
},
{
"title": "111"
"category": "232"
}
}
Når jeg velger kategori 232, viser den 1 array fordi det i dataene bare er 1 array som har kategori 232. Men andre gang, hvis jeg klikker på 212, viser den ingenting selv om det finnes verdi i dataene. Den filtrerer den første filterdataen.
Noen løsning på hvordan jeg kan løse dette? Jeg vet at problemet oppstår når jeg velger første verdi, dataene endres. Jeg trenger at når jeg velger andre verdi, skal det filtrere fra de forrige dataene, ikke fra det første filteret.
Svar #1
Du filtrerer arrayet og tilordner det tilbake til det samme arrayet, så du prøver å filtrere et allerede filtrert array på nytt. Du bør bruke et hjelpearray når du filtrerer:
filteredData = [];
// ....
print() {
this.filteredData = this.data.filter(category => category.categories[0].id === this.selectedOption);
}
og deretter bruke hjelpearrayen til å vise de filtrerte verdiene.
Svar #2
Dette er fordi du allerede har filtrert arrayen, så andre objekter fjernes.
Prøv slik:
this.originalArray = [...this.data];
this.data = this.originalArray.filter(category => category.categories[0].id === this.selectedOption);
Behold de originale dataene i et array originalArray, deretter kan du beholde de filtrerte dataene fra originalArray i arrayet data
