#javascript #angular #angular-material
Вопрос:
У меня есть варианты, которые предварительно заполнены услугой. Параметры имеют одинаковое «значение», но «Описание» отличается
Например :
list=[ {value:1, Description:'a'}, {value:1, Description:'b'}, {value:1, Description:'c'}]
Я фиксирую значение и описание отдельно при хранении в бэкэнд-БД. Сейчас,
- Во время перезагрузки я хочу сопоставить с опцией, которую выбрал пользователь (скажем, «b»)
- но когда я использую
this.fgHeaderForm.patchValue({ selectformCtrName:"1" })
это показывает самый первый вариант, выбранный в (в нашем случае это будет «a») 3. Я хочу показать второй вариант, который является «b», как выбранный 4. Я попытался установить
document.getElementById("sel").textContent='b'
но это приводит к тому, что выбор теряет свою раскрывающуюся функциональность, и пользователь затем не может измениться, если захочет это сделать.
Что можно сделать, чтобы я мог установить индекс, например, в приведенном выше случае » b «находится в индексе =1, поэтому опция «b» будет установлена в
Ответ №1:
Насколько я понимаю ваш вопрос, у вас есть массив и вы хотите использовать индексы в качестве значения в <mat-option>
?
В таком случае вы можете сделать это так:
<mat-select formControlName="selectformCtrName" >
<mat-option *ngFor="let option of list; let i = index" [value]="i">
{{option.Description}}
</mat-option>
</mat-select>
Затем вы можете задать значения формы с индексом массива.
this.fgHeaderForm.patchValue({selectedformCtrName: "1"});
Недостатком будет то, что для получения выбранного описания или значения вам необходимо снова извлечь выбранный индекс из группы форм.
Комментарии:
1. Спасибо, Хавальд, за твой ответ. Я использовал решение, немного изменил его в соответствии с требованиями. Теперь я получаю индекс выбранного параметра из того, что я получаю значение. Отличная Помощь !