Angular matAutocomplete 不显示值,但在选择项目时显示

标签 angular angular-material2 angular4-forms mat-autocomplete

当我在下面的 matAutocomplete formControl 中选择一个项目时,我总是得到 ID,而不是下拉列表中显示的值。

当我将 [value]="baseCoin.ID"更改为 [value]="baseCoin.Abbr"时,当我选择一个项目时会显示正确的字符串,但是,我需要 (ngModelChange) 事件来返回 baseCoin .ID 到方法,而不是 baseCoin.Abbr。

<mat-form-field>
    <input matInput placeholder="Base Coin" aria-label="Base Coin" [matAutocomplete]="basecoin" [formControl]="baseCoinCtrl" [(ngModel)]="newTrade.BaseCoin.Abbr" (ngModelChange)="populateMarketCoins( $event )">
    <mat-autocomplete #basecoin="matAutocomplete">
        <mat-option *ngFor="let baseCoin of filteredBaseCoins | async" [value]="baseCoin.Abbr">
            {{baseCoin.Abbr | uppercase}}
        </mat-option>
    </mat-autocomplete>
</mat-form-field>

我错过了什么吗?

感谢您的帮助。谢谢。

最佳答案

查看文档中的“Setting separate control and display values”。自动完成有一个 @Input() displayWith 这是一个“将选项的控制值映射到触发器中的显示值的函数”。

displayFn(baseCoin) {
  return baseCoin ? baseCoin.Abbr : undefined;
}
<mat-autocomplete #basecoin="matAutocomplete" [displayWith]="displayFn">
  <mat-option *ngFor="let baseCoin of filteredBaseCoins | async" [value]="baseCoin">
      {{baseCoin.Abbr | uppercase}}
  </mat-option>
</mat-autocomplete>

我还想补充一下 Autocomplete有一个

@Output() optionSelected: EventEmitter<MatAutocompleteSelectedEvent>

属性,这是“每当从列表中选择选项时发出的事件”。 Select也有类似的输出。但是,onSelectionChanged 是“选择或取消选择选项时发出的事件。”

关于Angular matAutocomplete 不显示值,但在选择项目时显示,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48767149/

相关文章:

angular - AnyChart 8.1 与 Angular rowclick 事件不返回项目或期间信息

angular - 如何使用/启用动画图标?

html - Angular2/4 电话验证

angular - 单击事件不适用于带有 ngbButton 的 Angular 4 Bootstrap 中的输入类型 ="radio"

javascript - addEventListener 在 Angular 选择中不起作用

angular - 如何捕获显示 Angular 动态组件时发生的错误?

javascript - 如何计算和显示以分钟为单位的时差Angular 2

带有 mat-expansion-panel 的 Angular 6 mat-nav-list

angular - 使用 Angular Material 和 Safari 从另一个对话框打开对话框

angular - 通过按 Angular 4 中的回车键提交表单