html - kako filtrirati DataTable s više potvrdnih okvira


Imam Mat-Tablicu koju želim filtrirati. Imam jedan set checkboxes iste varijable koji radi. Ali kada sam želio dodati drugi set, tablica se ne filtrira prema njima jer se čini da i dalje traži u istom stupcu.

Ovo je moja komponenta ngOnInit :

  ngOnInit() {
    this.marinService.getAllContainers().subscribe((result) => {
     //Data
      this.dataSource = new MatTableDataSource(result);
      //Paginator
      this.dataSource.paginator = this.paginator;
      //AutoFilter Form 1st page
      this.clientType = this.route.snapshot.queryParamMap.get('clientType');
      this.storageType= this.route.snapshot.queryParamMap.get('storageTypes');
      console.log('The Client name is : '+this.clientType+'  '+'The storage Facility is : '+this.storageType);
      //snapShot CheckBox Filter
      this.dataSource.filterPredicate = (paramData: Container, paramFilter: any) => {
        return paramFilter.split(',').every((itemParam: any) => paramData.LQOCH_SHM_LOEZI_QTSR.indexOf(itemParam) !== -1);
      };
      this.filterParamasBoxes.subscribe((newFilterValue: any[]) => {
        this.dataSource.filter = newFilterValue.join(',');
      });
      //CheckBoxFilter
      this.dataSource.filterPredicate = (data: Container, filter: any) => {
        return filter.split(',').every((item: any) => data.SOG_MCOLH.indexOf(item)!== -1);
      };
      this.filterCheckboxes.subscribe((newFilterValue: any[]) => {
        this.dataSource.filter = newFilterValue.join(',');

      });
      });

  }

Ovo su funkcije :

  addFilter(change: MatCheckboxChange) {
    if (this.filterCheckboxes.value.some((a: any) => a === change.source.value)) {
      this.filterCheckboxes.next(this.filterCheckboxes.value.filter((a: any) => a !== change.source.value));
    } else {
      this.filterCheckboxes.next(this.filterCheckboxes.value.concat(change.source.value));
    }
  }
  paramFilter(changeParam: MatCheckboxChange){
    if (this.filterParamasBoxes.value.some((a: any) => a === changeParam.source.value)) {
      this.filterParamasBoxes.next(this.filterParamasBoxes.value.filter((a: any) => a !== changeParam.source.value));
    } else {
      this.filterParamasBoxes.next(this.filterParamasBoxes.value.concat(changeParam.source.value));
    }
}

i ovo su moji checkboxes html :

  <!--Check Box Search-->
  <div class="CheckBoxStyle">
      <mat-checkbox  class="CheckBoxClass" value="RE" (change)="addFilter($event)">refeer</mat-checkbox>
  <mdb-icon class="IconClass"  fas icon="snowflake"></mdb-icon>

  <br>
<br>
    <mat-checkbox  class="CheckBoxClass" value="RG" (change)="addFilter($event)"  >dry</mat-checkbox>
    <mdb-icon  class="IconClass" fas icon="tint" matBadge="22" matBadgePosition="above after"></mdb-icon>
    <br>
<br>
<mat-checkbox  class="CheckBoxClass" value="OT" (change)="addFilter($event)">Open Top</mat-checkbox>
<mdb-icon class="IconClass" fas icon="box-open"></mdb-icon>
<br>
<br>
<mat-checkbox  class="CheckBoxClass" value="HC" (change)="addFilter($event)">Flat</mat-checkbox>
<mdb-icon class="IconClass" fas icon="grip-lines"></mdb-icon><br><br>
<mat-checkbox  class="CheckBoxClass" value="MRR" (change)="paramFilter($event)">MRR</mat-checkbox>
</div>

Dodavanje radnog stackblitz linka -> https://stackblitz.com/edit/marin-project-stackblitz

Nećete moći vidjeti nikakve podatke jer je to interna API.

Mislim da je problem s filter u NgOnInit jer je to metoda MatTable u angular. Dakle, možda može raditi samo jednu stvar odjednom i ne više od toga.