Угловая панель расширения материала требует 3 щелчков, чтобы открыть после закрытия (Угловой> 10)

После закрытия панели расширения Angular Material Expansion Panel с помощью логической переменной она закрывается нормально, но чтобы снова открыть ее, вам нужно будет щелкнуть ее 3 раза, чтобы снова открыть. По-видимому, в Angular 6 он отлично работает с идентичным примером, но я, очевидно, не хочу понижать версию, я пробовал Angular 10 и 11, и это не сработало. Я также пытался закрыть его разными способами, например, методом закрытия панели и т. Д., Но без разницы.

Короткая гифка, показывающая проблему

Stackblitz:Angular 11:https://stackblitz.com/edit/angular-ivy-4qj1n9?file=src%2Fapp%2Fapp.component.html

Угловой 6https://stackblitz.com/edit/material-all-examples-quprqw?file=app%2Fapp.module.ts

1 ответ

Насколько я могу судить, это какая-то проблема с рендерингом, из-за которой не удается обновить / отобразить израсходованную строку. То, что я сделал, далеко не идеально, но оно работает, поэтому используйте его, если хотите. Я отслеживаю статус открытия / закрытия меню и на основании этого полностью визуализирую расширенную кнопку и панель расширения.

В component.ts я добавил переменную:

        menuOpen = false;

и в component.html я сделал:

      <button mat-icon-button [matMenuTriggerFor]="menu"
(click)="menuOpen=true"
(menuClosed)="langExpanded=false; menuOpen=false;"
>

(обратите внимание на «menuOpen = false;»)

И, наконец, я добавил *ngIf как к кнопке, так и к панели расширения на основе переменной «menuOpen».

      <button *ngIf="menuOpen" class="mat-menu-item" style="display:inline;"
   (click)="$event.stopPropagation();  langExpanded=!langExpanded;">
    <mat-icon>translate</mat-icon>
    <span>Language</span>
    <mat-icon class="customexpandicon" *ngIf="!langExpanded; else expandedIcon">expand_more</mat-icon>
    <ng-template #expandedIcon><mat-icon class="customexpandicon">expand_less</mat-icon></ng-template>
  </button>

  <mat-expansion-panel *ngIf="menuOpen" #langPanel="matExpansionPanel" class="mat-elevation-z0"
    (click)="$event.stopPropagation()" [disabled]="true" [expanded]="langExpanded">

stackblitz с внесенными изменениями: https://stackblitz.com/edit/angular-ivy-ylkbwu?file=src/app/app.component.html

Другие вопросы по тегам