У меня есть эта группа форм с несколькими элементами управления формой:
myForm: FormGroup = new FormGroup({
...
myControl: new FormControl(),
...
});
Форма управления myControl
такова:
<mat-form-field class="col-large">
<mat-select formControlName="myControl">
<mat-option *ngFor="let data of dataMap" [value]="data.value">
{{data.description}}
</mat-option>
</mat-select>
</mat-form-field>
dataMap
- это в основном массив объектов, у которых есть значение свойства и описание свойства, оба они являются строками, поэтому пример объекта:
{
"value":"1",
"description":"desc"
}
Затем у меня есть ввод с автозаполнением, который работает с тем же dataMap
, и всякий раз, когда пользователь начинает печатать, он просматривает описания массива, предлагая только те, которые соответствуют написанному тексту. Затем, когда пользователь выбирает параметр, он вызывает метод, который извлекает соответствующее значение из массива и устанавливает значение, полученное для myControl
. Ожидаемое поведение заключается в том, что при выборе параметра в автозаполнении значение изменяется в myControl
и отображается новое описание.
Проблема в том, что значение для myControl
установлено правильно, но выбранный параметр не отображается.
Я не понимаю, что в методе ngOnInit я установил значение по умолчанию из карты для myControl
следующим образом:
this.myForm.get('myControl').setValue("1");
и он правильно выбирает параметр и показывает его как выбранный. Затем в методе обратного вызова для выбора автозаполнения я делаю то же самое, но он не выбран. Элемент управления формы становится пустым.
Я проверил значение, которое я получаю от автозаполнения, и оно существует в dataMap
. Я также распечатал значение myControl
после установки нового значения, и это новое правильное значение.