【发布时间】:2020-03-24 09:19:07
【问题描述】:
我正在使用 Angular 8 做一个 Web 应用程序。我使用 Reactive Forms,并且我有一个选择来填充获取 API。我从 API 获得的选项是一组对象,如下所示:
[
{id: 1, name: 'Number one', requireDocumentNumber: true},
{id: 2, name: 'Number two', requireDocumentNumber: true},
{id: 3, name: 'Number three', requireDocumentNumber: false},
]
我在 select 中使用 ngValue 将整个对象存储在 formControl 中。
<form [formGroup]="form">
<div class="form-group">
<label for="reasonSelect">Select an option</label>
<select class="form-control"
formControlName="reason"
id="reasonSelect">
<option *ngFor="let r of reasonList" [ngValue]="r">
{{r.name}}
</option>
</select>
</div>
</form>
我正在使用setValue 将所需的对象设置到formControl 中,但是表单中没有选择该选项。
reasonList: IReason[] = [];
form: FormGroup;
objectToAssign = {
id: 2,
name: 'Number two',
requireDocumentNumber: true
};
constructor(
private fb: FormBuilder,
) {
}
ngOnInit() {
this.form = this.fb.group({
reason: [null, Validators.required],
});
// async reasons
of(this.getReasons())
.delay(2000)
.subscribe(r => {
this.reasonList = r;
// setValue
this.form.get('reason').setValue(this.objectToAssign);
});
}
getReasons() {
return [
{id: 1, name: 'Number one', requireDocumentNumber: true},
{id: 2, name: 'Number two', requireDocumentNumber: true},
{id: 3, name: 'Number three', requireDocumentNumber: false},
];
}
该对象在 formControl 内部,但是,它没有在表单中被选中。
我创建了一个演示:https://stackblitz.com/edit/angular-qzxixn
我的目标是在表单中设置所需的选项以显示名称,同时将整个对象保留在 formControl 中。
【问题讨论】:
标签: angular angular-reactive-forms