【问题标题】:submit value for mat-autocomplete提交 mat-autocomplete 的值
【发布时间】:2018-09-16 04:37:52
【问题描述】:

我们在表单上有一个mat-autocomplete 输入。

选项是从数据库中填充的,这些选项以 ID、字符串对的形式返回。

我希望允许用户根据字符串值进行选择,但在发布服务器端时将 ID 值与表单一起提交以供查找?请问什么是最好的解决方案?

我的 component.html 是;

<mat-form-field class="form-group special-input">
    <input type="text" placeholder="Select a trade" aria-label="Select a trade" matInput formControlName="trade" [matAutocomplete]="auto">
    <mat-autocomplete #auto="matAutocomplete" md-menu-class="autocomplete">
        <mat-option *ngFor="let option of filteredOptions | async" [value]="option.name">
             <span [innerHTML]="option.name | highlight: toHighlight"></span>
        </mat-option>
    </mat-autocomplete>
</mat-form-field>

其中选项有一个名称和 id 字段。

我尝试将 [value]="option.name" 调整为 [value]="option.id" 但这会将自动完成中的文本字段更新为 id 值而不是字符串?

【问题讨论】:

    标签: angular angular-material


    【解决方案1】:

    你可以添加一个简单的

    (onSelectionChange)="selectedOption(option)"
    

    mat-option 上,将数据的绑定传递给ts 组件。然后您可以轻松决定应该将什么值传递给服务器。

    【讨论】:

    • 好吧,你是说我在 .ts selectedCategory 中有一个本地变量,然后在捕获的事件中将 id 设置为这个?即this.selectedCatergoy = option.id
    • 没错!或者您已经可以通过调用 selectedOption(option.id) 捕获所需的值并在 ts 组件中执行您需要的任何操作
    • 只是补充一下,我陷入了这种情况,事件触发了两次github.com/angular/material2/issues/4094,但通过过滤isUserInput 对这个问题进行了排序。
    • 很高兴听到,我会在我的项目中检查它的行为
    猜你喜欢
    • 1970-01-01
    • 2018-11-28
    • 1970-01-01
    • 2021-07-04
    • 2021-09-24
    • 1970-01-01
    • 1970-01-01
    • 2020-04-24
    • 1970-01-01
    相关资源
    最近更新 更多