Javascript 角度-使用面片在下拉列表中设置选定值

Javascript 角度-使用面片在下拉列表中设置选定值,javascript,angular,angular-material,Javascript,Angular,Angular Material,我正在为我的应用程序创建一个“编辑视图”,我从一个API调用接收信息,然后使用补丁将这些值设置到我的表单中。我在下拉选择中面临一些主要问题,因为补丁值似乎没有从API中放入默认值。将API中的数据绑定到select中的正确方法是什么 我搜索了与我类似的问题,发现我需要设置ngModel,我尝试在选项中选择标记,但也不起作用 选择标记(HTML) 行业类型 行业类型 {{industryType2}} 行业类型选项(这始终是静态的) 我使用FormBuild创建表单,然后使用API调用填充表单

我正在为我的应用程序创建一个“编辑视图”,我从一个API调用接收信息,然后使用补丁将这些值设置到我的表单中。我在下拉选择中面临一些主要问题,因为补丁值似乎没有从API中放入默认值。将API中的数据绑定到select中的正确方法是什么

我搜索了与我类似的问题,发现我需要设置ngModel,我尝试在选项中选择标记,但也不起作用

选择标记(HTML)


行业类型

行业类型 {{industryType2}}
行业类型选项(这始终是静态的)

我使用FormBuild创建表单,然后使用API调用填充表单

// CREATE FORMS
this.userDetailsForm = this.fb.group({
    IndustryType2: ['']
})

// POPULATE FORMS
this.initRequests().then((data) => {
    this.userDetailsForm.patchValue(data)
})
这是我从API收到的JSON响应

{
    IndustryType2: ["(MH)"],
    OtherProperty: ["Example"],
    ...
}

我在我的项目中使用了这种方法

this.form = this.fb.group({
  IndustryType2: this.fb.group({
    id: ['']
  });
});

<mat-form-field class="full-width" formGroupName="IndustryType2"  appearance="outline" [floatLabel]="'always'">
  <mat-label>Industry Type</mat-label>
  <mat-select placeholder="" formControlName="id">
    <mat-option *ngFor="let industryType2 of industryTypes" [value]="industryType2">
      {{ industryType2 }}
    </mat-option>
  </mat-select>
</mat-form-field>
现场示例:

使用以下内容:-

   this.initRequests().then((data) => {
        const keys = Object.keys(data);
        const patchValueData = {};
        keys.forEach(function(key) {
        patchValueData[key] = k[key][0]
        });
        this.userDetailsForm.patchValue(patchValueData)
    });

首先,每个属性的值都在一个数组中,是真的吗?@AJT_82 IndustryType2的值在一个数组中。其他值我认为它们不重要,因为它们在我的表单上工作。我只面临下拉选择的问题。那就是为什么找不到它的原因。数组中的字符串与字符串不同。如果数组中有一项,则需要执行类似于
的操作。userDetailsForm.get('industryType2')。setValue(data.industryType2[0])
现在注意到,在模板中,您使用的是
IndustryType
,但表单是使用
IndustryType
构建的。您没有从中得到错误吗?在select中,您使用的是字符串,因此它需要匹配。因为您试图将
(MH)
['(MH)]
匹配。它们不一样,因此无法匹配。
form.get('controlname').setValue(res.id);
   this.initRequests().then((data) => {
        const keys = Object.keys(data);
        const patchValueData = {};
        keys.forEach(function(key) {
        patchValueData[key] = k[key][0]
        });
        this.userDetailsForm.patchValue(patchValueData)
    });