【问题标题】:Angular Material autocomplete use object attribute as valueAngular Material 自动完成使用对象属性作为值
【发布时间】:2020-10-08 08:54:06
【问题描述】:

我有一个我想在自动完成中使用的对象列表。当一个选项被选中时,formControl 获取所选项的值。现在我不关心整个对象,我只关心 ID。我更改了选项以将 id 作为值,但随后 textinput 仍然为空。

  <mat-option *ngFor="let option of filteredOptions | async" [value]="option.id">
    {{option.name}}
  </mat-option> 

示例:https://stackblitz.com/edit/angular-b97y6e-jwm2jq?file=src%2Fapp%2Fautocomplete-display-example.ts

有没有办法将对象属性用作值?

【问题讨论】:

    标签: angular angular-material


    【解决方案1】:

    这里的问题是 [value] 总是字符串。请改用 [ngValue]。在这里您可以传递对象和数字(它们是 javascript 中的对象)等。

    Differences between value and ngValue in Angular 5

    <mat-option *ngFor="let option of filteredOptions | async" [ngvalue]="option.id">
        {{option.name}}
    </mat-option> 
    

    【讨论】:

    • 您能否编辑示例以向我展示其工作原理>?
    【解决方案2】:

    问题是你在这里绑定了错误的值-> [value]="option.id"

    解决方案

      <mat-option *ngFor="let option of filteredOptions | async" [value]="option">
        {{option.name}}
      </mat-option> 
    

    在您的 filteredOptions 中没有任何 id 参数,这就是它不起作用的原因 所以,

    [value]="option.id" 更改为[value]="option"

    一切都会好起来的! 检查更新的代码

    https://stackblitz.com/edit/angular-b97y6e-hsmvqn?file=src%2Fapp%2Fautocomplete-display-example.html

    【讨论】:

    • 该选项确实没有id 示例不正确。我更新了。
    猜你喜欢
    • 2021-01-16
    • 2022-12-25
    • 1970-01-01
    • 1970-01-01
    • 2018-10-19
    • 2019-10-14
    • 2015-08-22
    • 2016-10-11
    • 1970-01-01
    相关资源
    最近更新 更多