【问题标题】:Angular material chip list with autocomplete show on add button click单击添加按钮时自动完成显示的角材料芯片列表
【发布时间】:2020-05-31 20:10:45
【问题描述】:

我有一个带有自动完成功能的 Angular 材料芯片列表,但在示例中,当您将光标放在最后添加的芯片附近时,它会显示下拉列表,但我想在最后添加的芯片附近显示一个添加按钮,并且仅在用户之后显示自动完成已点击加号图标

像这样 - https://angular-zqijrv.stackblitz.io 但是在这里,当我删除所有芯片时,有一个奇怪的边框/轮廓我无法删除,并且只有在单击添加时才会显示输入框。

【问题讨论】:

    标签: angular angular-material


    【解决方案1】:

    我认为你能做的是

    您可以尝试在只读文本框中和何时显示筹码

     <input
          placeholder="New fruit..."
          #fruitInput
          [formControl]="fruitCtrl"
          [readonly]="readonl"   -- // add a readonly attribute
          [matAutocomplete]="auto"
          [matChipInputFor]="chipList"
          [matChipInputSeparatorKeyCodes]="separatorKeysCodes"
          (matChipInputTokenEnd)="add($event)">
    

    当用户选择芯片时

    // html file event
        (optionSelected)="selectChip()" this event is fired when you select something from the dropdown.
    
      // ts file
        selectChip(){
        // your code 
      this.readonl = true;
        }
    

    // 用户无法输入任何内容

    您可以通过添加按钮将此 readonl 标志设置为 false 并在输入框中设置焦点,以便用户可以键入并查看下拉菜单。


    第二种方法 有 2 个变量,一个是主数据变量,另一个是自动完成数据变量中的主数据副本。

     // ts file 
        masterData = [x,y,z]
        autoComplete = [...this.master]
    
    // html file event
        (optionSelected)="selectChip()" this event is fired when you select something from the dropdown.
    
      // ts file
        selectChip(){
        // your code 
        this.autocomplete.length = 0; // make autocomplete length to 0 items and add a logic to move focus to some other element.
        }
    
        // when u click on add button
        addButton() {
        autoComplete = [...this.master]
        }
        // now the dropdown have items and will appear again.
    

    【讨论】:

    • 你可以参考我添加的链接吗?
    猜你喜欢
    • 2019-02-18
    • 2017-08-29
    • 2020-06-18
    • 2019-09-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多