具有可扩展行的 Angular (7+) 材料表 - 同时多个扩展行

Efr*_* A. 4 angular-material angular angular-material-table

我正在使用带有可扩展行的材料表

我想在行单击时展开多行。默认行为是在单击新行时关闭先前展开的行。我不想关闭前面的那些,每个都应该保持打开状态,直到再次单击。我怎样才能做到这一点?

Sud*_*jee 8

这是另一种方法。

只需将变量设置为数组即可

expandedElement: PeriodicElement[] = [];
Run Code Online (Sandbox Code Playgroud)

在动画部分使用函数而不是直接检查

[@detailExpand]="checkExpanded(element) ? 'expanded' : 'collapsed'"
Run Code Online (Sandbox Code Playgroud)

并在添加类时使用相同的函数

[class.example-expanded-row]="checkExpanded(element)"
Run Code Online (Sandbox Code Playgroud)

然后单击进行函数调用。如果该元素存在,则将其从数组中删除,如果不存在,则将其添加

(click)="pushPopElement(element)"
Run Code Online (Sandbox Code Playgroud)

这是使用的 2 个函数。请随意提高方法的效率。这是为了演示而在短时间内编写的粗略方法。

checkExpanded(element): boolean {
    let flag = false;
    this.expandedElement.forEach(e => {
      if(e === element) {
        flag = true;

      }
    });
    return flag;
  }

  pushPopElement(element) {
    const index = this.expandedElement.indexOf(element);
    console.log(index);
    if(index === -1) {
        this.expandedElement.push(element);
    } else {
      this.expandedElement.splice(index,1);
    }
  }
Run Code Online (Sandbox Code Playgroud)

您可以在这里找到工作示例:https://stackblitz.com/edit/angular-x6jz81