Это странно. Это на самом деле проблема с обнаружением изменений. Если вы вручную активируете обнаружение изменений после переключения боковой панели, все работает нормально. Рассмотрим следующее:
<!-- On click, call our toggle function which will toggle the side-nav and
trigger change detection -->
<button mat-icon-button *ngIf="mobileQuery.matches" (click)="toggle(snav)"><mat-icon>menu</mat-icon></button>
И наша toggle
функция:
toggle(sidenav: any) {
sidenav.toggle();
this.changeDetectorRef.detectChanges();
}
Все работает как положено. Кроме того, если вы просто показываете / скрываете кнопку (не удаляете ее из DOM), все работает должным образом:
<!-- As long as you only show/hide the button, everything works as expected -->
<div [hidden]="!mobileQuery.matches">
<button mat-icon-button (click)="snav.toggle()"><mat-icon>menu</mat-icon></button>
</div>
У меня создан стек стека, который показывает эти примеры работающих . Это действительно странно, и я думаю, что вы, возможно, обнаружили ошибку в Angular материале. Дайте мне знать, если вы собираетесь отправить запрос об ошибке в репо; если нет, я буду.