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