【发布时间】:2018-10-14 05:06:06
【问题描述】:
正如标题所说,我有一个反应形式,其中包含多个 <mat-select>。在初始表单加载时,即使form.value 显示初始选项也不会显示。
相关组件.ts:
export class DesJobInfoEditComponent implements OnInit {
...
currentJobData: IJob;
jobTypes: IJobType[];
...
constructor(private fb: FormBuilder) {
...
// Construct forms
this.createForm();
this.initializeForm();
}
createForm() {
this.editJobInfoForm = this.fb.group({
...
JobType: '', // mat-select
...
});
}
initializeForm() {
this.rebuildForm();
}
rebuildForm() {
this.editJobInfoForm.reset({
...
JobType: this.jobTypes[this.currentJobData.JobType].DisplayDesc,
...
});
}
}
相关的html:
<mat-form-field fxFlex>
<mat-label>Job Type</mat-label>
<mat-select formControlName="JobType" placeholder="Job Type">
<mat-option *ngFor="let jobType of jobTypes" value="jobType.value">
{{ jobType.DisplayDesc }}
</mat-option>
</mat-select>
</mat-form-field>
当表单加载时,选择不显示最初选择的选项,但是,显然它们设置正确:
Form value { ... "JobType": "0 - Standard", ... }
表单上显示的只是占位符。
这似乎不应该这么难。
我做错了什么?
编辑:
this.jobTypes 在加载模块时加载,它是一个存在于我的数据服务中的 BehaviorSubject。因此,我在该组件的构造函数中订阅了它:
this.data.jobTypes.subscribe(jobTypes => { this.jobTypes = jobTypes });
【问题讨论】:
-
也许你需要管道异步?
let jobType of jobTypes | async -
你是如何加载jobTypes的?我没有看到填充 this.jobTypes 的代码
-
@Stanton 我已经更新了我的问题。
-
您对此有任何更新吗?我遇到了完全相同的问题...当我更改为简单的 HTML 时,选择一切正常...
标签: angular angular-material angular-reactive-forms