如何为 Mat-table 创建一个展开所有按钮,以便它展开 table in Angular 8 中的每一行?

How to create an Expand All Button for Mat-table so that it expands every row in the table in Angular 8?

我正在使用 Angular Mat-Table 并创建了一个带有可扩展行的 table 就像下面 Angular 8:

https://stackblitz.com/angular/qykjaloknex?file=app%2Ftable-expandable-rows-example.ts

我想知道是否有一种方法可以创建一个展开所有按钮,一次展开每一行,而不必一次单击每一行来展开它。

谢谢!

您可以通过引入一个 属性 来做到这一点,除了 expandedElement.

之外,您还可以切换(例如通过按钮)检查

在模板中添加一个按钮来切换 expand/collapse 全部:

<button mat-raised-button (click)="toggle()">{{allRowsExpanded ? 'Collapse' : 'Expand'}}</button>

更改要展开的行的条件:

<div class="example-element-detail"
           [@detailExpand]="(element == expandedElement || allRowsExpanded) ? 'expanded' : 'collapsed'">

并将其连接到组件中:

allRowsExpanded: boolean = false;

public toggle() {
  this.allRowsExpanded = !this.allRowsExpanded;
  this.expandedElement = null;
}

Have a look at this stackblitz for a working example.