Angular 6 Material - 在 mat-select 多个选项中更改分隔符

Pat*_*ira 2 angular-material angular

我的表单中有一个带有多个选项的 mat-select(您可以在此处查看演示)。

<mat-form-field style="width: 100%">
  <mat-select placeholder="Toppings" [formControl]="toppings" multiple>
    <mat-option *ngFor="let topping of toppingList" [value]="topping">{{topping}}</mat-option>
  </mat-select>
</mat-form-field>
Run Code Online (Sandbox Code Playgroud)

它在其输入字段中显示以逗号分隔的选定选项列表。有什么办法可以改变分隔符吗?

yur*_*zui 5

可以在此处找到负责该分隔符的代码https://github.com/angular/material2/blob/9f6aa843cd2f68562d3f5290688bbe5bab957bcf/src/lib/select/select.ts#L642

// TODO(crisbeto): delimiter should be configurable for proper localization.
return selectedOptions.join(', ');
Run Code Online (Sandbox Code Playgroud)

如您所见,尚不支持。但是 还有另一种方法可以实现它。

只需添加自定义mat-select-trigger如下:

<mat-select [formControl]="toppings" multiple ...>
    ...
    <mat-select-trigger>
        <span> {{toppings.value ? toppings.value.join('; ') : ''}}</span>
    </mat-select-trigger>
</mat-select>
Run Code Online (Sandbox Code Playgroud)

分叉演示

这样您就可以选择任何分隔符,例如:

toppings.value.join('&#9832;')
Run Code Online (Sandbox Code Playgroud)

在此处输入图片说明

  • 这是一个带有管道的示例 https://stackblitz.com/edit/angular-qzcvyw-kejfrh?file=app/select-multiple-example.html (2认同)