如何通过单击 Angular 中的一行来展开垫 Table 中的多行?
How to expand multiple rows in a Mat Table on clicking of a row in Angular?
我试图创建一个 mat-table
网格,它允许在单击行时展开多行。
目前我只允许一次展开一行,当我单击第二行时,第一行会折叠。是否可以在不折叠其他行的情况下一次展开多行?
我尝试了[多个]关键字,但没有帮助。
StackBlitz Link 用于单行扩展
展开多行的一种可能方法
从(跟踪单个项目)更改点击处理程序:
(click)="expandedElement = row"
跟踪多个
(click)="toggleRow(row)"
TS 部分使用简单的数组来添加/删除要扩展的行
toggleRow(row) {
const index = this.expandedElements.findIndex(x => x.name == row.name);
if (index === -1) {
this.expandedElements.push(row);
} else {
this.expandedElements.splice(index, 1);
}
}
下一步改变这个:
[@detailExpand]="row.element == expandedElement ? 'expanded' : 'collapsed'"
对此:
[@detailExpand]="isExpanded(row)"
TS部分
isExpanded(row): string {
if (
this.expandedElements.findIndex(x => x.name == row.element.name) !== -1
) {
return 'expanded';
}
return 'collapsed';
}
我试图创建一个 mat-table
网格,它允许在单击行时展开多行。
目前我只允许一次展开一行,当我单击第二行时,第一行会折叠。是否可以在不折叠其他行的情况下一次展开多行?
我尝试了[多个]关键字,但没有帮助。
StackBlitz Link 用于单行扩展
展开多行的一种可能方法
从(跟踪单个项目)更改点击处理程序:
(click)="expandedElement = row"
跟踪多个
(click)="toggleRow(row)"
TS 部分使用简单的数组来添加/删除要扩展的行
toggleRow(row) {
const index = this.expandedElements.findIndex(x => x.name == row.name);
if (index === -1) {
this.expandedElements.push(row);
} else {
this.expandedElements.splice(index, 1);
}
}
下一步改变这个:
[@detailExpand]="row.element == expandedElement ? 'expanded' : 'collapsed'"
对此:
[@detailExpand]="isExpanded(row)"
TS部分
isExpanded(row): string {
if (
this.expandedElements.findIndex(x => x.name == row.element.name) !== -1
) {
return 'expanded';
}
return 'collapsed';
}