У меня есть список выбора, который я хочу ввести в значение, сохраненное значение, возвращаемое с сервера. Но что бы я ни старался, я не могу заставить его использовать выбранное значение.Как установить начальное значение угла 2 Реактивный выбор
Я использую Угловой 2.2.0 и Реактивные формы.
Вот список значений для списка выбора.
private categoryList: ICategory[] = [
new Category({ id: 1, name: 'Cat 1' }),
new Category({ id: 2, name: 'Cat 2' }),
new Category({ id: 3, name: 'cat 3' })
];
Сохраненная значение:
{ id: 1, name: 'Cat 1' }
Использование FormBuilder я создать форму
this.itemForm = this.fb.group({
name: [null, Validators.required],
description: [null, Validators.required],
weight: [null, Validators.required],
dimensions: [null, Validators.required],
category: [null, Validators.required]
});
я отформатируйте ее с сохраненными данными
(<FormGroup>this.itemForm)
.setValue({
name: item.name,
description: item.description,
weight: item.weight,
dimensions: item.dimensions,
category: item.category
}, { onlySelf: true });
Шаблон выглядит следующим образом
<select name="category" [formControl]="itemForm.controls['category']">
<option [selected]="itemForm.controls['category'].value == null" value="">-- Select --</option>
<option *ngFor="let cat of categories" [ngValue]="cat">
{{cat.name}}
</option>
</select>
{{itemForm.controls['category'].value | json }}
Ожидаемый результат Название элемента одного выбранного в избранных и соответствует текст в формате JSON отображается под шаблон
Фактическое поведение JSON показывает это:
{ "id": 1, "name": "Cat 1" }
Но ничего не выбрано в выберите
Если --Выбор-- выбран обновления JSON правильно «».
Если выбрана другая кошка, JSON также обновляется правильно.
Что я делаю неправильно, как инициализировать выбор?
EDIT Я также попытался это:
<option *ngFor="let cat of categories" [selected]="itemForm.controls['category'].value.id == cat.id" [ngValue]="cat">
Не знаю, действительно ли вы получите уведомление для моего ответа, так как я удалил его и восстановил. Если нет, посмотрите ниже ответ, который, надеюсь, поможет вам! :) – Alex