typescript - If-sats i Angular-materialtabell
Jag använder Angular Material-tabell och jag vill dölja en kolumn i tabellen baserat på ett if-villkor. Om villkoret är sant visas kolumnen på sidan annars döljs den.
detta är min HTML-kod.
<ng-container matColumnDef="delete">
<th class="th" mat-header-cell *matHeaderCellDef> Delete </th>
<td mat-cell *matCellDef="let element" ><span><i class="fa fa-trash" aria-hidden="true" (click)="check(element._id)" style="cursor: pointer;" data-toggle="modal" data-target="#dModal"></i></span>
</td>
</ng-container>
detta är min ts-kod
displayedColumns: string[] = ['assessment','status','action','issue','created','delete'];
Jag försökte men misslyckades, kan någon hjälpa mig?
Svar #1
Om du vill dölja kolumnen baserat på if- och else-villkoret bör du bygga displayedColumns-arrayen dynamiskt.
Till exempel.
Du vill dölja borttagningskolumnen, värdet i displayedColumns-arrayen som
this.displayedColumns = ['assessment','status','action','issue','created'];
Svar #2
@Murugan-svaret är bra om du har några fält. Men om du har många kolumner kan det vara bättre att använda ett annat sätt. I mitt fall har jag många kolumner, som:
columns = [{columnDef: '1',...}, ... columnDef: '50',...]
displayedColumns = this.columns.map(c => c.columnDef);
och beror på situationen, jag behöver ta bort kolumn 30, 31, 43. Då har jag andra displayedColumnsToRemove=['30','31','43',]
i min villkorliga tar jag bort det
if (conditional) {
this.displayedColumns = _.xor(this.displayedColumns,this.displayedColumnsToRemove);
}
Jag använder loadsh-biblioteket (_.xor), men om du inte kan, letar jag efter annat sätt att ta bort dessa element.
