【发布时间】:2020-05-07 23:10:28
【问题描述】:
我想相对于父元素定位一个 mat 菜单弹出窗口。
Angular 的文档中关于 mat 菜单位置的内容如下:
默认情况下,菜单将显示在(y轴)下方,(x轴)之后,不重叠其触发器
这很好,但它与触发器 (matMenuTriggerFor) 相关。
我希望菜单相对于父元素打开。单击 div 内的按钮,mat men 显示而不重叠它的相对元素。
<gridster-item [item]="w" [class.editing]="w.editing">
<div class="primary-header widget-settings-bar" color="primary" *ngIf="showSettingsBar == true">
<div class="widget-settings-button contrast-color">
<mat-icon class="icon" aria-hidden="false" aria-label="Delete" [matMenuTriggerFor]="appMenu">settings
</mat-icon>
</div>
<div class="widget-settings-button contrast-color">
<mat-icon class="icon" aria-hidden="false" aria-label="Duplicate" (click)="duplicateDashboardWidget(w)">
control_point_duplicate</mat-icon>
</div>
<div class="widget-settings-button contrast-color">
<mat-icon class="icon" aria-hidden="false" aria-label="Delete" (click)="deleteDashboardWidget(w)">delete
</mat-icon>
</div>
</div>
<div class="grid-widget mat-card2">
<ndc-dynamic [ndcDynamicComponent]=components[w.component] [ndcDynamicInputs]="w"></ndc-dynamic>
</div>
</gridster-item>
这是我正在谈论的小部件组件。 Unopened Component (hovering)
这是当您单击触发菜单的 matMenuTriggerFor 时发生的情况。请注意它与父 div 重叠。 Triggered from button
这就是我想要的。菜单相对于父元素弹出。请注意,它没有与 div 重叠,因为我将 matMenuTriggerFor 放在 gridster-item 父级上。
问题是我无法弄清楚如何在没有 matMenuTriggerFor 的情况下打开此菜单,并且我不希望在单击父 div 时打开菜单。我只想在单击小齿轮按钮时打开菜单。
<gridster-item [item]="w" [class.editing]="w.editing" [matMenuTriggerFor]="appMenu">
<div class="primary-header widget-settings-bar" color="primary" *ngIf="showSettingsBar == true">
<div class="widget-settings-button contrast-color">
<mat-icon class="icon" aria-hidden="false" aria-label="Delete">settings
</mat-icon>
</div>
<div class="widget-settings-button contrast-color">
<mat-icon class="icon" aria-hidden="false" aria-label="Duplicate" (click)="duplicateDashboardWidget(w)">
control_point_duplicate</mat-icon>
</div>
<div class="widget-settings-button contrast-color">
<mat-icon class="icon" aria-hidden="false" aria-label="Delete" (click)="deleteDashboardWidget(w)">delete
</mat-icon>
</div>
</div>
<div class="grid-widget mat-card2">
<ndc-dynamic [ndcDynamicComponent]=components[w.component] [ndcDynamicInputs]="w"></ndc-dynamic>
</div>
</gridster-item>
【问题讨论】:
标签: angular angular-material material-design