У меня был похожий опыт, когда я хотел, чтобы триггер меню (кнопка) оставался на переднем плане, когда меню было открыто. Предпосылка проста, но вам нужен способ указать элементу, который вы хотите на переднем плане, что наложение находится в каком-то состоянии, когда оно отображается. В моем случае меню было «открыто».
Для этого я сделал три вещи:
Создайте переменную open
в своем классе Компонентов
@Component({
selector: 'foreground-button-example',
templateUrl: 'foreground-button-example.html',
styleUrls: ['foreground-button-example.css'],
})
export class ForegroundButtonExample {
open = false;
}
Обработка событий MatMenuTrigger
menuOpened
и menuClosed
и установка class
в зависимости от открытого значения
<button mat-fab [matMenuTriggerFor]="menu" [class.toolbar-menu-open]="open" (menuOpened)="open = true" (menuClosed)="open = false">
<mat-icon class="example-icon">star_border</mat-icon>
</button>
Затем добавьте css, чтобы вывести кнопку «Открыть» на передний план, и отключите pointer-event
s для кнопки и ее дочерних элементов. Это позволит щелчкам проходить через кнопку и вызывать щелчок на наложенном фоне, чтобы закрыть его.
.toolbar-menu-open {
z-index: 1001;
}
.toolbar-menu-open,
.toolbar-menu-open * {
pointer-events: none;
}
Ваш сценарий звучит так, как будто он немного другой, но я считаю, что он работает аналогичным образом.
Вот демо StickBlitz