Как видно из названия, у меня есть реактивная форма, в которой содержится несколько <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", ... }
Все, что отображается в форме, является заполнителем.
Кажется, это не должно быть так сложно.
Что я делаю не так?
EDIT:
this.jobTypes
загружается при загрузке модуля, и это BehaviorSubject, который живет в моей службе данных. Я подписываюсь на него в конструкторе этого компонента так:
this.data.jobTypes.subscribe(jobTypes => { this.jobTypes = jobTypes });