The default icon for toggling a mat-expansion-panel
is >
. Setting hideToggle
true just hides the toggle icon. Is there any way to change it? I found nothing in the official documentation. I want to use +
or -
icon if the state is closed or opened respectively.
As stated on the Angular Material Expansion Panel documentation, we can customise the stylings of the mat-extension-panel-header
, which will in turn allow you to customise the icons.
First and foremost, you hide the original icon by setting the hideToggle
attribute to false. In addition, we assign the event bindings (opened)
and (closed)
to the panelOpenState
property. You may check out the other properties of mat-expansion-panel
over here.
<mat-expansion-panel (opened)="panelOpenState = true" (closed)="panelOpenState = false"hideToggle="true">
Next, on your mat-panel-description
, you include the custom icons required. The icons shown will be dependent on the state of the panel. For this example, we are using the icons from Material Icons.
<mat-panel-description>
<mat-icon *ngIf="!panelOpenState">add</mat-icon>
<mat-icon *ngIf="panelOpenState">remove</mat-icon>
</mat-panel-description>
I have edited the original sample from the Angular documentation, such that it is using the custom +
and minus
icons to denote the expanded/collapsed state of the mat-extension-panel
. You may access the demo over here.