Этот вопрос относится к этой проблеме Github, с mat-menu
, которую нельзя переключить с помощью наведения мыши, я в основном пытаюсь заменить основанное на начальной загрузке меню горизонтальной навигации на меню угловых материалов.Единственное, что удерживает меня от репликации меню, основанного на начальной загрузке, - это открытие и закрытие mat-menu
при наведении курсора.Как упомянуто в вышеупомянутой проблеме Github, есть некоторые обходные пути для достижения того, чего я хочу, например, использование mouseEnter
(mouseenter)="menuTrigger.openMenu()"
или добавление span в Mat-menuдля того, чтобы связать mat-menu
close,
<mat-menu #menu="matMenu" overlapTrigger="false">
<span (mouseleave)="menuTrigger.closeMenu()">
<button mat-menu-item>Item 1</button>
<button mat-menu-item>Item 2</button>
</span>
</mat-menu>
, но ни одно из решений, по-видимому, не охватывает каждый небольшой сценарий,
например,
Как упоминалось в вышеприведенном выпуске GithubВ первом решении SO есть следующие проблемы:
- Наведите курсор мыши на кнопку, и появится меню.Но если вы нажмете на кнопку, она скроется и покажет меню.ИМХО, это ошибка.
- Чтобы скрыть меню, пользователь должен щелкнуть за пределами меню.В идеале меню должно быть скрыто, если курсор мыши находится за пределами
области (которая включает в себя кнопку, меню и подменю)
длиннее 400 мс.
И в решении span, которое пытается решить одну из вышеупомянутых проблем, но не работает должным образом, например,
при наведении на MatMenuTrigger
открывает mat-menu
, как и ожидалось, но если пользователь перемещаетотведите курсор мыши, не вводя mat-menu
, затем он не закроется автоматически, что неправильно.
Кроме того, переход к одному из подменю уровней два также закрывает меню первого уровня, что не то, что я хочу,
PS при перемещении мыши из одного открытого меню в следующее одноуровневое не открывается следующее.Я думаю, что это может быть трудно достичь, как упоминалось здесь , но я думаю, что некоторые из них могут быть достижимы, верно?
Вот базовый stackBlitz , который воспроизводит то, что яЯ испытываю любую помощь.