使用按钮角度材料表过滤每列

sun*_*ive 6 javascript typescript angular-material angular

我想在列标题上有一个过滤按钮,这样我就可以通过单击复选框以及多列过滤来过滤结果。

这是我尝试过的,按钮加载菜单,但是单击时也会开始排序,并且定位不正确:

<table mat-table [dataSource]="source" matSort (contextmenu)="onContextMenu($event)"
 matRipple [matRippleRadius]="'15'"
 [matRippleColor]="'#03a9f4'">

        <ng-container matColumnDef="name">
    <th mat-header-cell *matHeaderCellDef mat-sort-header> Name <button mat-button matSuffix mat-icon-button aria-label="Clear" [matMenuTriggerFor]="menu">
        <mat-icon>filter_list</mat-icon>
      </button>
      <mat-menu #menu>
          <ng-template matMenuContent>
            <div *ngFor="let item of items">
                <mat-checkbox class="mat-menu-item">{{item.name}}</mat-checkbox>  
            </div>
          </ng-template>
        </mat-menu>
    </th>
    <td mat-cell *matCellDef="let row"> {{row.name}} </td>
  </ng-container>

  <!-- Email Column -->
  <ng-container matColumnDef="emailAddress">
    <th mat-header-cell *matHeaderCellDef mat-sort-header> Email Address </th>
    <td mat-cell *matCellDef="let row"> {{row.emailAddress}} </td>
  </ng-container>

  <tr mat-header-row *matHeaderRowDef="columns; sticky: true"></tr>
  <tr mat-row *matRowDef="let row; columns: columns;"></tr>
</table>

<mat-paginator [length]="source.length" [pageSizeOptions]="[10, 20, 50, 100]" showFirstLastButtons></mat-paginator>
Run Code Online (Sandbox Code Playgroud)

这是我想要的示例: 例子

小智 0

您是否尝试过向过滤器按钮添加点击事件以防止排序?

(click)="foo($event)"

foo($event: Event) {
    $event.stopPropagation();
}
Run Code Online (Sandbox Code Playgroud)