我有一个mat-expansion-panel,单击mat-expansion-panel-header时会打开。有没有办法禁用此行为?我想使用其打开方法在其他位置打开扩展面板,并通过单击标题禁用打开它的功能。
答案 0 :(得分:3)
这不是本机支持的内容。 尽管您可以通过几个步骤快速构建解决方法:
首先,您需要删除指示器,因为它不是用户可以与之交互的东西:
<mat-expansion-panel #panel1 [hideToggle]="true">
请注意,我还给组件起了一个名称,以便以后获得其引用。
为防止用户交互,我们将添加一个CSS类prevent-click
:
<mat-accordion class="prevent-click">
.prevent-click{
pointer-events: none;
}
如果您希望用户能够与面板的内容进行交互:
<button class="authorize-click" mat-raised-button>test</button>
.authorize-click{
pointer-events: auto;
}
注意:您可以使用此类包装扩展面板的内容,以允许内部进行任何交互。
要与面板交互,请使用面板的参考(请参见上文)。 您可以调用3个功能
open()
close()
toggle()
<button (click)="panel1.toggle()">Toggle panel 1</button>
如果要与组件中的面板进行交互,则需要使用ViewChild()
获取其引用。
示例:
@ViewChild('panel1') firstPanel: MatExpansionPanel;
public toggleFirstPanel(){
this.firstPanel.toggle();
}