angular - 展开 Angular Material Accordion

标签 angular angular-material

我在同一页有 2 个不同的 Accordion 。每个 Accordion 都有多个扩展面板。如何关闭 2 个 Accordion 的所有扩展面板并打开当前选择的扩展面板?我可以关闭当前 Accordion 的扩展面板,但另一个保持打开状态。两个 Accordion 的作用相同,只是它从不同的列表中获取数据,并且某些 div 位于两个 Accordion 之间

`<mat-accordion [multi]= "true"  >
    <mat-expansion-panel *ngFor = "let item of items" (click) = "viewItem(item)" >
        <mat-expansion-panel-header>
           <mat-panel-title>
              //something
           </mat-panel-title>
        </mat-expansion-panel-header>
            //something..
    </mat-expansion-panel>
</mat-accordion> 
<mat-accordion [multi]= "true"  >
    <mat-expansion-panel *ngFor = "let item of items" (click) = "viewItem(item)" >
      <mat-expansion-panel-header>
         <mat-panel-title>
              //something
         </mat-panel-title>
      </mat-expansion-panel-header>
            //something..
    </mat-expansion-panel>
</mat-accordion>`

最佳答案

当您打开其中一个面板时,您可以关闭所有其他面板:

TS

@ViewChildren(MatExpansionPanel) panels: QueryList<MatExpansionPanel>;

closeOtherPanels(openPanel: MatExpansionPanel) {
    this.panels.forEach(panel => {
        if (panel !== openPanel) {
            panel.close();
        }
    });
}

HTML
<mat-accordion [multi]= "true">
    <mat-expansion-panel *ngFor = "let item of items" (click) = "viewItem(item)" #panel (opened)="closeOtherPanels(panel)" >
        <mat-expansion-panel-header>
           <mat-panel-title>
              //something
           </mat-panel-title>
        </mat-expansion-panel-header>
            //something..
    </mat-expansion-panel>
</mat-accordion> 
<mat-accordion [multi]= "true">
    <mat-expansion-panel *ngFor = "let item of items" (click) = "viewItem(item)" #panel (opened)="closeOtherPanels(panel)" >
      <mat-expansion-panel-header>
         <mat-panel-title>
              //something
         </mat-panel-title>
      </mat-expansion-panel-header>
            //something..
    </mat-expansion-panel>
</mat-accordion>

关于angular - 展开 Angular Material Accordion ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53089394/

相关文章:

javascript - 无法访问 $mdBottomSheet 中的父 $scope

angular - Angular7 中的 ElasticSearch Post 调用抛出 400 错误

单击该行内单元格中的操作时触发 Angular Material 表行(单击)事件

css - 如何在侧面模式(有 Angular Material )下将 mat-toolbar 和 sidenav 保持在顶部?

angular - ng new 在更新到 Angular 6 后停止工作

angular - Angular 项目中的 Blazor webassembly

angular - mat-form-field Angular Material 中有多个输入

Angular2 EventEmitter 触发父组件

angular - 使用 angularfire 过滤来自 Firestore 的数据

javascript - Angular2 从服务调用组件