Angular 7 无法为 mat-select 表单控件设置值

Angular 7 can't set value for mat-select form control

我有这个表单组和几个表单控件:

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 上工作,每当用户开始输入时,它都会搜索数组的描述,仅提示与所写文本匹配的那些。然后,当用户 select 选择一个选项时,它会调用一个方法,从数组中检索相应的值并设置为 myControl 检索到的值。预期的行为是,当自动完成中的一个选项被 select 编辑时,该值在 myControl 中更改并显示新的描述。
问题是 myControl 的值设置正确,但没有显示 selected 选项。
我不明白的是,在 ngOnInit 方法中,我通过这种方式从地图为 myControl 设置了默认值:

this.myForm.get('myControl').setValue("1");

并且它正确 select 选项并将其显示为 selected。然后,在自动完成 selection 的回调方法中,我做了同样的事情,但它不是 selected。表单控件变为空白。
我已经检查了我从自动完成中获得的值,它存在于 dataMap 中。设置新值后,我还打印了 myControl 的值,它是正确的新值。

改为这样做

let test = {
  "value":"1",
  "description":"desc"
}

this.myForm.get('myControl').setValue(test);

您应该将相同类型的对象传递给 myControl