Установите параметр в на основе индекса параметра программно

#javascript #angular #angular-material

Вопрос:

У меня есть варианты, которые предварительно заполнены услугой. Параметры имеют одинаковое «значение», но «Описание» отличается

Например :

list=[ {value:1, Description:'a'}, {value:1, Description:'b'}, {value:1, Description:'c'}]

Я фиксирую значение и описание отдельно при хранении в бэкэнд-БД. Сейчас,

  1. Во время перезагрузки я хочу сопоставить с опцией, которую выбрал пользователь (скажем, «b»)
  2. но когда я использую

    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. Спасибо, Хавальд, за твой ответ. Я использовал решение, немного изменил его в соответствии с требованиями. Теперь я получаю индекс выбранного параметра из того, что я получаю значение. Отличная Помощь !