Я делаю веб-приложение в Angular 8. Я использую 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},
]
Я использую 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, но это не выбран в форме.
![enter image description here](https://i.stack.imgur.com/Yma0U.png)
Я создал демо: https://stackblitz.com/edit/angular-qzxixn
Моя цель установить желаемую опцию в форме для отображения имени, сохраняя весь объект внутри formControl.