angular - 打开菜单时如何聚焦输入元素?
问题描述
<button mat-button id="categories-button" [mat-menu-trigger-for]="categoryList">
<span>categories</span>
<mat-icon id="drop-arrow">arrow_drop_down</mat-icon>
</button>
<mat-menu #categoryList>
<mat-form-field appearance="standard" id="category-search-wrapper">
<input (click)="$event.stopPropagation()" matInput id="category-search">
</mat-form-field>
<button mat-menu-item>Settings</button>
<button mat-menu-item>Help</button>
</mat-menu>
我希望category-search
输入集中,当菜单打开时,问题是它似乎还没有准备好,当 menuOpened 事件被发出时。打开菜单时如何聚焦输入元素?
解决方案
<button id="categories-button" [mat-menu-trigger-for]="categoryList" (menuOpened)="this.categoryListOpened()">
<span>categories</span>
<mat-icon id="drop-arrow">arrow_drop_down</mat-icon>
</button>
<mat-menu #categoryList>
<mat-form-field appearance="standard" id="category-search-wrapper">
<input matInput id="category-search" (click)="$event.stopPropagation()">
</mat-form-field>
<button mat-menu-item>Settings</button>
<button mat-menu-item>Help</button>
</mat-menu>
categoryListOpened() {
setTimeout(() => {
this.categorySearch.focus();
});
}
- 添加
(menuOpened)="this.categoryListOpened()"
到按钮,打开菜单 categoryListOpened
像上面一样在组件的类中声明方法
推荐阅读
- macos - 在 MacOS10.14 Mojave 上,当我访问相机时,它会请求两次权限
- eviews - Eviews 中 Johansen 协整检验的最优滞后
- medium.com - 检查新的 medium.com 帖子的最快端点是什么?
- laravel - 如何在orWhere查询中查询多个whereMonth for laravel
- swift - facebook登录跳转到另一个页面
- c++builder - 全局声明 TBitmap
- android-recyclerview - 如何使用 Image 或 ImageSlider 滚动 recyclerview
- python - 如何定义涉及 for 循环的迭代函数,其中迭代器 i,j,l.. 也用于定义的迭代函数
- ios - 备份自制IOS应用
- php - 使用不带 $_POST 的 url 中的值检索数据库记录