Я пытаюсь отсортировать мат-стол. массив это просто ответы от API.
@ViewChild("MatSortstash", { static: false }) sortstash: MatSort;
@ViewChild("paginatorstash", { static: false })
paginatorstash: MatPaginator;
fullstashDataResponseSource = new MatTableDataSource();
if (resp3) {
for (let x = 0; x < resp3.length; x++) {
// console.log(resp3[x].data.items);
if (resp3[x].data.items) {
bigboyarray2.push(resp3[x].data.items);
}
}
}
let bigarrayconcat = [].concat(bigboyarray2);
let biggestitemarrayever = [];
for (var i = 0; i < bigarrayconcat.length; ++i) {
for (var j = 0; j < bigarrayconcat[i].length; ++j)
biggestitemarrayever.push(bigarrayconcat[i][j]);
}
this.fullstashdataBigBoiArray = biggestitemarrayever;
this.fullstashDataResponseSource = new MatTableDataSource(
this.fullstashdataBigBoiArray
);
this.fullstashDataResponseSource.sort = this.sortstash;
Вот HTML
<mat-tab-group [animationDuration]="'0ms'">
<mat-tab label="Stash">
<div class="example-container1 mat-elevation-z8">
<ng-container *ngIf="fullstashDataResponseSource" >
<div>{{networth}} <img class="img-responsive smaller"
src="https://web.poecdn.com/image/Art/2DItems/Currency/CurrencyRerollRare.png" /> Net Worth</div>
<br>
<mat-form-field>
<input matInput (keyup)="applyFilterStash($event.target.value)" placeholder="Filter">
</mat-form-field>
<!-- <mat-form-field>
<input matInput (keyup)="applyFilterCurrencyCuttoff($event.target.value)" placeholder="Currency Cuttoff">
</mat-form-field>
-->
<table mat-table [dataSource]="fullstashDataResponseSource" #MatSortstash="matSort" matSort class="w-100">
<ng-container matColumnDef="name">
<th mat-header-cell *matHeaderCellDef mat-sort-header >Name</th>
<td mat-cell *matCellDef="let element">
<ng-container *ngIf="element.name || element.typeLine">
{{element.name ? element.name : element.typeLine}}
</ng-container>
</td>
</ng-container>
<ng-container matColumnDef="stackSize">
<th mat-header-cell *matHeaderCellDef mat-sort-header >Count</th>
<td mat-cell *matCellDef="let element" >
{{element.stackSize}}
</td>
</ng-container>
<ng-container matColumnDef="icon">
<th mat-header-cell *matHeaderCellDef >Icon</th>
<td mat-cell *matCellDef="let element">
<ng-template #testtooltip3>
<ul *ngFor="let item of element.explicitMods"> {{item}}</ul>
</ng-template>
<button mat-button [ngbTooltip]="testtooltip3">
<img [src]="element.icon" />
</button>
</td>
</ng-container>
<ng-container matColumnDef="inventoryId">
<th mat-header-cell *matHeaderCellDef mat-sort-header>Stash</th>
<td mat-cell *matCellDef="let element" >
{{ element.inventoryId }}
</td>
</ng-container>
<ng-container matColumnDef="worth">
<th mat-header-cell *matHeaderCellDef mat-sort-header>Worth</th>
<td mat-cell *matCellDef="let element">
<!-- {{worthfinder(element)}} -->
<!-- {{element.worth}} <img src="https://web.poecdn.com/image/Art/2DItems/Currency/CurrencyRerollRare.png?scale=1&w=1&h=1" style="height:10%;" /> -->
{{element.worth}} <img
src="https://web.poecdn.com/image/Art/2DItems/Currency/CurrencyRerollRare.png?scale=1&w=1&h=1" />
</td>
</ng-container>
<tr mat-header-row *matHeaderRowDef="disptest; sticky: true "></tr>
<tr mat-row *matRowDef="let row; columns: disptest"></tr>
</table>
<mat-paginator #paginatorstash [length]="100" [pageSize]="10" [pageSizeOptions]="[5, 10, 25, 100]">
</mat-paginator>
</ng-container>
</div>
</mat-tab>
. Я хочу отсортировать столбец Worth. У меня есть элемент costfinder (элемент), который сравнивает элемент с другим массивом и добавляет к нему ценность. это все отлично работает. У меня даже фильтр уже работает.
applyFilter(filterValue: string) {
this.currenttablesource.filter = filterValue.trim().toLowerCase();
// console.log(this.currenttablesource);
}
applyFilterStash(filterValue: string) {
this.fullstashDataResponseSource.filter = filterValue.trim().toLowerCase();
// console.log(this.currenttablesource);
}
но я хочу установить отсечение элементов, не удаляя их из массива самостоятельно, просто скрыть их, если element.worth aka (fullstashdataBigBoiArray [itemindex] .worth) я не хочуудалить элемент, как это.
for (let x=0;x<this.fullstashdataBigBoiArray.length;x++){
if (this.fullstashdataBigBoiArray[x].worth<5){
delete this.fullstashdataBigBoiArray[x]
}
}