据我所知,这是某种渲染问题,无法更新/渲染已用的行。我所做的远非完美,但它确实有效,所以如果你愿意,可以使用它。我正在跟踪菜单的打开/关闭状态,并基于此完全呈现展开的按钮和扩展面板。
在 component.ts 我添加了变量:
menuOpen = false;
在component.html中我做了:
<button mat-icon-button [matMenuTriggerFor]="menu"
(click)="menuOpen=true"
(menuClosed)="langExpanded=false; menuOpen=false;"
>
(注意“menuOpen=false;”)
最后,我根据“menuOpen”变量将 *ngIf 添加到按钮和扩展面板中
<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