Как меню Angular Material можно открыть программным способом, используя переменную шаблона ссылки при нажатии кнопки, доступ к которой осуществляется в компоненте с помощью ViewChild?
Меню обычно открывается при щелчке, но я хочу открыть его программнопри наведении мыши.
(mouseover) Обработчик событий выдает ошибку: Не удается прочитать свойство 'openMenu' из неопределенного.
Так почему clickHoverMenuTrigger не определен в компоненте?
Вот этот компонентhtml
<button mat-icon-button [matMenuTriggerFor]="clickHoverMenu"
#clickHoverMenuTrigger (mouseover)="openOnMouseOver()">
<mat-icon>notifications</mat-icon>
</button>
Вот машинописный текст компонента
@ViewChild(MatMenuTrigger) clickHoverMenuTrigger: MatMenuTrigger;
openOnMouseOver() {
this.clickHoverMenuTrigger.openMenu();
}
Этот метод документирован здесь https://material.angular.io/components/menu/overview
Та же проблема возникла и получила ответ здесь Как получить доступтриггер меню mat из машинописного текста (у меня нет репутации, чтобы комментировать это)
Похоже, я делаю именно то, что указано в документации и решении StackOverflow выше.
Поскольку clickHoverMenuTrigger не определен, это должно быть проблемой с @ ViewChild.
Код для Stackblitz .Откройте консоль, чтобы увидеть ошибку.