Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/asp.net-mvc-3/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Angular 设置角度材质的值以编程方式选择“自动完成”_Angular_Angular Material - Fatal编程技术网

Angular 设置角度材质的值以编程方式选择“自动完成”

Angular 设置角度材质的值以编程方式选择“自动完成”,angular,angular-material,Angular,Angular Material,我有一个简单的函数。现在我想以编程方式设置此自动完成的值/所选选项。这是我的代码: hardware.component.html <tr> <td class="desc pd7">Firmware</td> <td> <div class="form-group mb0"> <mat-form-field class="example-full-width">

我有一个简单的函数。现在我想以编程方式设置此自动完成的值/所选选项。这是我的代码:

hardware.component.html

<tr>
    <td class="desc pd7">Firmware</td>
    <td>
        <div class="form-group mb0">
            <mat-form-field class="example-full-width">
                <input type="text" placeholder="Select firmware" aria-label="Number" matInput [formControl]="myControlFirmware" [matAutocomplete]="auto1" (keydown.enter)="$event.preventDefault()">
                <mat-autocomplete #auto1="matAutocomplete" [displayWith]="displayFirmwares">
                    <mat-option *ngFor="let firmware of filteredFirmwares | async" [value]="firmware" (onSelectionChange)="getIdFromFirmware($event, firmware)">
                        {{ firmware.name }}
                    </mat-option>
                </mat-autocomplete>
            </mat-form-field>
        </div>
    </td>
</tr>

我试图将我的固件型号设置为所选固件的
\u id
或名称,但没有任何效果。如何以编程方式设置该值。我正在使用角度材质@v7

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

如果您不能提前确定这些选项,您可以从API检索它们,例如,您可以像这样从
MatAutocompleteTrigger
获取它们

import { MatAutocompleteTrigger } from '@angular/material'

@ViewChild(MatAutocompleteTrigger) _auto: MatAutocompleteTrigger;

let options = this._auto.autocomplete.options.toArray()
单击按钮时,此stackblitz将值设置为
two
。我从触发器中检索选项,并使用选项数组设置
窗体控件中的值。。。在您的情况下,它将是
this.myControlFirmware.setValue(选项[1].value)

Stackblitz


那么基本上您想将
输入的值设置为特定选项?与呈现组件时的默认值类似?如果该值未包含在选项列表中,如何以编程方式设置该值?我是这样做的,但不会触发
optionSelected
事件。如何触发它?这是通过基础
formControl
设置值,它不会以这种方式触发组件事件。因为这是通过
formControl
以编程方式设置值,所以只需调用函数
选项selected
事件将在下一行调用。。。无需使用
选项Selected
事件。
import { MatAutocompleteTrigger } from '@angular/material'

@ViewChild(MatAutocompleteTrigger) _auto: MatAutocompleteTrigger;

let options = this._auto.autocomplete.options.toArray()
 setValue() {
    let options = this._auto.autocomplete.options.toArray()
    this.myControl.setValue(options[1].value)
  }