垫选择显示的值不同于垫选择的值

Rah*_*dey 5 angular-material angular6

我有一个mat-select下拉列表,在这里我遍历了frequencyArr对象。

在ts

frequencyArr = [
{key : "Once daily", abbriviation : '0-0-1'},
{key : "Twice daily", abbriviation : '1-0-1'},
{key : "Thrice daily", abbriviation : '1-1-1'},
{key : "Four times a day", abbriviation : '1-1-1-1'}
  ]
Run Code Online (Sandbox Code Playgroud)

在html中

<mat-select placeholder="frequency" formControlName="frequency" required>                             
    <mat-option *ngFor="let frequency of frequencyArr" [value]="frequency.abbriviation">
        <span>{{frequency.key }} : {{ frequency.abbriviation}}</span>
    </mat-option>
</mat-select>
Run Code Online (Sandbox Code Playgroud)

我想做的是打开对话框时将显示对象键:object value-

<span>{{frequency.key }} : {{ frequency.abbriviation}}</span>
Run Code Online (Sandbox Code Playgroud)

在此处输入图片说明

很好,但是当我选择该选项时,它应该仅将frequency.key显示到所选字段中,而不会发生。

在此处输入图片说明

我尝试使用Google谷歌搜索,但在这种情况下没有找到任何东西。任何帮助表示赞赏。

GCS*_*SDC 8

您可以通过使用 mat-select-trigger 和模板引用来实现,如下所示:

<mat-select placeholder="frequency" required #select>
  <mat-select-trigger>
    {{ select.value?.abbriviation }}
  </mat-select-trigger>
  <mat-option *ngFor="let frequency of frequencyArr" [value]="frequency">{{frequency.key }} : {{ frequency.abbriviation}}</mat-option>
</mat-select>
Run Code Online (Sandbox Code Playgroud)


Mar*_*hal 5

您可以执行以下操作来完成此操作。

将您的值设置为 frequency.key

[value]="frequency.key"
Run Code Online (Sandbox Code Playgroud)

然后使用<mat-select-trigger显示frequency.value来自formControl

<mat-select-trigger>
      {{frequency.value}}
    </mat-select-trigger>
Run Code Online (Sandbox Code Playgroud)

Stackblitz

https://stackblitz.com/edit/angular-wxv1wv?embed=1&file=app/select-custom-trigger-example.html