Javascript 在输入字段中输入3个字符后如何显示mat菜单?
我正在实现这个输入字段,所以当我输入3个字符时,我想将mat菜单显示为mat选项的值,但由于某些原因,mat菜单从未显示。谁能给我指出正确的方向吗?提前多谢 这是Javascript 在输入字段中输入3个字符后如何显示mat菜单?,javascript,angular,typescript,angular-material,Javascript,Angular,Typescript,Angular Material,我正在实现这个输入字段,所以当我输入3个字符时,我想将mat菜单显示为mat选项的值,但由于某些原因,mat菜单从未显示。谁能给我指出正确的方向吗?提前多谢 这是 加载。。。 显示菜单 {{item}} 这就是我试图实现的目标: 无需使用mat菜单,您可以使用mat复选框作为选项 ngFor必须在mat选项元素上使用,否则,在当前实现中,您将得到一个选项 加载指示器(加载…)可以显示为禁用的mat选项 要启用多项选择,该项应为具有布尔值的对象,该布尔值指示是否选中该项 这是一个闪电战的例子
加载。。。
显示菜单
{{item}}
这就是我试图实现的目标:
mat菜单openMenu()
功能
解决方案
我们需要一种方法来触发菜单打开
下面是我使用的一种方法
在html中添加以下标记
显示菜单
在TS文件中,在下面添加@ViewChild
属性以保存matMenuTrigger
@ViewChild(“menuTrigger”,{static:false})设置menuTrigger(
内容:MatMenuTrigger
) {
如果(内容){
this.contentPlaceholder=内容;
}
}
最后修改onKeyUp()
函数
onKeyUp() {
if (this.currentText.length >= 3) {
console.log("testing");
this.isSpinnerLoading = true;
this.menuContent = false;
setTimeout(() => {
this.menuContent = true;
}, 2000);
setTimeout(() => {
this.contentPlaceholder.openMenu();
}, 2001);
} else {
this.isSpinnerLoading = false;
}
}
请注意,在this.menuContent()
变为true后,我们将触发openMenu()
为什么要在mat选项中使用mat菜单?@IsmailDinar我刚刚更新了我的问题,显示了我想要完成的任务的图片。我正在尝试将mat菜单添加到mat选项中,以便以后可以使用mat autocomplete用户可以选择多个选项?@IsmailDinar Yes用户可以选择多个选项您只需在auto=“matAutocomplete”之前添加它应该可以工作。@Devmix我已经更新了stackblitz示例。作为一项要求,我需要使用mat菜单,而您的答案没有使用它
onKeyUp() {
if (this.currentText.length >= 3) {
console.log("testing");
this.isSpinnerLoading = true;
this.menuContent = false;
setTimeout(() => {
this.menuContent = true;
}, 2000);
setTimeout(() => {
this.contentPlaceholder.openMenu();
}, 2001);
} else {
this.isSpinnerLoading = false;
}
}