Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/402.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 在输入字段中输入3个字符后如何显示mat菜单?_Javascript_Angular_Typescript_Angular Material - Fatal编程技术网

Javascript 在输入字段中输入3个字符后如何显示mat菜单?

Javascript 在输入字段中输入3个字符后如何显示mat菜单?,javascript,angular,typescript,angular-material,Javascript,Angular,Typescript,Angular Material,我正在实现这个输入字段,所以当我输入3个字符时,我想将mat菜单显示为mat选项的值,但由于某些原因,mat菜单从未显示。谁能给我指出正确的方向吗?提前多谢 这是 加载。。。 显示菜单 {{item}} 这就是我试图实现的目标: 无需使用mat菜单,您可以使用mat复选框作为选项 ngFor必须在mat选项元素上使用,否则,在当前实现中,您将得到一个选项 加载指示器(加载…)可以显示为禁用的mat选项 要启用多项选择,该项应为具有布尔值的对象,该布尔值指示是否选中该项 这是一个闪电战的例子

我正在实现这个输入字段,所以当我输入3个字符时,我想将mat菜单显示为mat选项的值,但由于某些原因,mat菜单从未显示。谁能给我指出正确的方向吗?提前多谢

这是


加载。。。
显示菜单
{{item}}
这就是我试图实现的目标:

  • 无需使用mat菜单,您可以使用mat复选框作为选项
  • ngFor必须在mat选项元素上使用,否则,在当前实现中,您将得到一个选项
  • 加载指示器(加载…)可以显示为禁用的mat选项
  • 要启用多项选择,该项应为具有布尔值的对象,该布尔值指示是否选中该项
  • 这是一个闪电战的例子。它并不完美,但可以帮助解决问题。

    您面临的问题是,内容打开时不会触发
    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;
        }
      }