Я пытаюсь скрыть строку после нажатия на кнопку в таблице матов.Я не знаю, где поставить *ngIf.Я пробовал на ng-container, но это не работает.Ниже мой HTML-файл.
*ngIf
ng-container
<mat-table class="lessons-table mat-elevation-z8" [dataSource]="application"> <ng-container matColumnDef="ID"> <mat-header-cell *matHeaderCellDef>ID</mat-header-cell> <mat-cell *matCellDef="let application">{{application.id}}</mat-cell> </ng-container> <ng-container matColumnDef="Name"> <mat-header-cell *matHeaderCellDef>Name</mat-header-cell> <mat-cell *matCellDef="let application">{{application.name}}</mat-cell> </ng-container> <ng-container matColumnDef="ApplicationDate"> <mat-header-cell *matHeaderCellDef>Application Date</mat-header-cell> <mat-cell *matCellDef="let application">{{application.applyDate}}</mat-cell> </ng-container> <ng-container matColumnDef="TrackingNumber"> <mat-header-cell *matHeaderCellDef>Tracking Number</mat-header-cell> <mat-cell *matCellDef="let application">{{application.trackNumber}}</mat-cell> </ng-container> <ng-container matColumnDef="Operation"> <mat-header-cell *matHeaderCellDef>Operation</mat-header-cell> <mat-cell *matCellDef="let application"> <button mat-raised-button color="primary" (click)="onClickGrant()">Grant</button> <button mat-raised-button color="warn" (click)="onClickDeny()">Deny</button> </mat-cell> </ng-container> <mat-header-row *matHeaderRowDef="displayedColumns"></mat-header-row> <mat-row *matRowDef="let row; columns: displayedColumns"></mat-row> </mat-table> <mat-paginator [pageSizeOptions]="[5,10,15,20]" [pageSize]="5" showFirstLastButtons></mat-paginator>
Другой способ - добавить класс к mat-row и использовать CSS, чтобы скрыть его.
mat-row
<mat-row *matRowDef="..." [class.hidden]="YOUR_IF_HERE"></mat-row>
Вы также можете посмотреть аналогичный пример с сайта Angualr Material: https://stackblitz.com/angular/voqbanbobpa?file=app%2Ftable-expandable-rows-example.ts
Вам нужно изменить объект dataSource из кода компонента, application в вашем случае, и удалить строку, которую вы хотите скрыть.
dataSource
application
Это зависит от кода вашего компонента, но вы, скорее всего, сделаете:
this.application = this.application.splice(i, 1);