代码之家  ›  专栏  ›  技术社区  ›  Alex Klaus

材料自动完成:将多个文本输入链接到一个自动完成面板

  •  1
  • Alex Klaus  · 技术社区  · 6 年前

    问题 :

    如何将多个文本输入链接到一个 autocomplete panel ?

    用例

    给定一个包含多个耦合字段的表单:电话号码( <input> );电话说明/标签( <input [matAutocomplete]> )用户应选择之前输入的电话描述/标签之一。

    技术挑战

    按照 official example ,两者 <mat-autocomplete> 以及 <输入& GT; 必须相互参照,例如

    <mat-form-field>
      <input type="text" matInput [formControl]="myControl" [matAutocomplete]="auto">
    </mat-form-field>
    <mat-autocomplete #auto="matAutocomplete">
      <mat-option *ngFor="let option of options" [value]="option">{{option}}</mat-option>
    </mat-autocomplete>
    

    如果这些元素是在循环中生成的,例如

    <div *ngFor="let item of items; index as index">
        ...
    </div>
    

    当无法生成 mat-autocomplete 动态ID。

    1 回复  |  直到 6 年前
        1
  •  0
  •   camden_kid    6 年前

    如果你只想做 将多个输入字段链接到一个自动完成面板 就这么简单- stackblitz

    标记

    <form class="example-form">
      <mat-form-field class="example-full-width" *ngFor="let autoComplete of autoCompletes">
        <input type="text" placeholder="Pick one" aria-label="Number" matInput [formControl]="myControl" [matAutocomplete]="auto">
      </mat-form-field>
      <mat-autocomplete #auto ="matAutocomplete">
        <mat-option *ngFor="let option of options" [value]="option">
          {{option}}
        </mat-option>
      </mat-autocomplete>
    </form>
    

    代码

    export class AutocompleteSimpleExample {
      myControl = new FormControl();
      options: string[] = ['One', 'Two', 'Three'];
      autoCompletes = ['batman', 'superman'];
    }
    

    或者您想要多个输入字段/自动完成面板对?因为模板变量是静态的,所以必须在模板内完成。