如何通过单击 mat-expansion-panel-header 来防止切换 mat-expansion-panel?

Sam*_*lam 9 html javascript angular-material angular

我知道 mat-expansion-panel-headers 是一个按钮。单击该按钮上的任意位置可切换扩展打开/关闭。但我不想让用户点击标题上的任何地方并打开它。应该有一个小按钮。单击该按钮将打开/关闭扩展面板。我怎样才能做到这一点?

我试过这个,但没有用。

<mat-expansion-panel>
<mat-expansion-panel-header (click)="$event.preventDefault()">
  <mat-panel-title>
    MENU
  </mat-panel-title>
</mat-expansion-panel-header>
Run Code Online (Sandbox Code Playgroud)

Nat*_*ner 23

amir 的解决方案在某些情况下有效,但我在使用箭头时遇到了一些动画问题。我发现这里的解决方案更加一致,总的来说我认为它更好:

单击标题中的 mat-checkbox 时,防止 mat-expansion 面板切换

<mat-expansion-panel-header>
  <mat-panel-title>
    Panel Title
  </mat-panel-title>
  <mat-panel-description>
     <mat-checkbox (click)="$event.stopPropagation();">Edit</mat-checkbox>
  </mat-panel-description>
</mat-expansion-panel-header>
Run Code Online (Sandbox Code Playgroud)

例如,这将防止在单击复选框时扩展标题

  • 好的!也适用于“mat-panel-description”本身(在我的例子中,我在“mat-panel-description”内呈现了一些按钮,并且单击这些按钮不必要地切换面板状态 - 可能是某种事件冒泡 - 和“stopPropagation” `mat-panel-description` 上的 ` 停止了它;而不必分别在每个按钮上执行 `stopPropagation`) (2认同)

ami*_*110 18

你可以玩切换功能:

<mat-expansion-panel >
<mat-expansion-panel-header #panelH (click)="panelH._toggle()">
  <mat-panel-title>
   <i class="material-icons app-toolbar-menu" (click)="panelH._toggle()">menu </i>
  </mat-panel-title>
  <mat-panel-description>

  </mat-panel-description>
</mat-expansion-panel-header>
Run Code Online (Sandbox Code Playgroud)

堆栈闪电战