如何使用选项组重置材料自动完成中的自定义过滤器

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何使用选项组重置材料自动完成中的自定义过滤器相关的知识,希望对你有一定的参考价值。

如何在物料自动填充autocomplete中重置自定义过滤器值。我选择了像here这样的选项组。现在我想创建一个自定义过滤器来过滤我们的结果和它的选项组名称。就像在我的ts文件中我有:

pokemonGroups = [
    {
      name: 'Grass',
      pokemon: [
        'bulbasaur-0', 'Bulbasaur', 'oddish-1','Oddish','bellsprout-2', 'Bellsprout'
      ]
    },
    {
      name: 'Water',
      pokemon: [
        'squirtle-3', 'Squirtle', 'psyduck-4','Psyduck', 'horsea-5', 'Horsea'
      ]
    }]

现在在我的html中:

<form [formGroup]="searchForm">
  <mat-form-field class="example-full-width">
    <input type="text" placeholder="Pokemon" aria-label="Pokemon" matInput formControlName="pokemonControl" [matAutocomplete]="auto">
    <mat-autocomplete #auto="matAutocomplete">
      <mat-optgroup *ngFor="let group of pokemonGroups" [label]="group.name" [disabled]="group.disabled">
        <mat-option *ngFor="let poke of group.pokemon" [value]="poke">
          {{ poke }}
        </mat-option>
      </mat-optgroup>
    </mat-autocomplete>
  </mat-form-field>
</form>

我的打字稿文件:

ngOnInit() {
// ... code
this.searchForm.controls.pokemonControl.valueChanges
      .subscribe(
      (val) => {
        this.filter(val);
      }
      );
}
filter(val) {
    for (const pokemon of this.pokemonGroups) {
      pokemon.pokemon= pokemon.pokemon.filter(pok=>
        pok.toLowerCase().indexOf(val.toLowerCase()) === 0);
    }

    return this.pokemonGroups;
  }

过滤器工作正常,但当我按退格键或删除关键字时,它应该重置我的所有值。哪个不行。

答案

我没有测试但是你可以尝试这样。另请检查this

ngOnInit() {

this.pokemonControl.valueChanges
      .subscribe(
      (val) => {
        this.filter(val);
      }
      );
}
  filter(val) {

    for (const pokemon of this.pokemonGroups) {
      pokemon.pokemon= pokemon.pokemon.filter(pokemon=>
        pokemon.toLowerCase().indexOf(val.toLowerCase()) === 0);
    }
    return this.pokemonGroup;
  }

以上是关于如何使用选项组重置材料自动完成中的自定义过滤器的主要内容,如果未能解决你的问题,请参考以下文章

ios中使用monotouch的自动完成选项的自定义列表

快速设置重置我的自定义按钮的状态

材料角度自动完成:选择选项后如何在屏幕中保留垫子选项?

Reactjs - 通过在自动完成组件(材料 UI)中的每个输入更改上点击 API 来更新选项

具有过滤查询集的组权限的自定义表单

如何更改 Material ui 自动完成中选项的字体大小?