Я хочу предварительно выбранный вариант в форме обновления уже - PullRequest
1 голос
/ 29 июня 2019

Я использую массив mat-select для отображения массива объекта, содержащего некоторый набор, такой как:

typesOfAccess = [{1 : 'View Image'},{2 : 'Tag MPxN'},
{3 : 'Configure User'},{4 : 'Assign UserGroup'},
{5:.......},{6:..........}]

Я подписываюсь на данные из API, чьи числа сохранены в массиве с их строковым значением.как показано ниже:

this.UserEditForm = this.formBuilder.group({
      is2FAEnabled:[''],
      AccessRights : ['',Validators.required]
    });

Я хочу отобразить номер массива, который я получаю из API, для предварительного выбора в HTML.

<mat-selection-list formControlName="AccessRights" (ngModelChange)="onNgModelChange($event)" required>
    <mat-list-option *ngFor="let tta of typesOfAccess; let i = index" [value]="i+1" [selected]="AccessRights.option">
      {{tta[i+1]}}
   </mat-list-option>
 </mat-selection-list>

Пожалуйста, помогите здесь.

Ответы [ 2 ]

1 голос
/ 29 июня 2019

Согласно документации :

Значением для каждого имени элемента управления является массив, содержащий начальное значение в качестве первого элемента в массиве.

Начальное значение в вашем компоненте ''.Измените его на то, что вы хотите, чтобы начальное значение было:

AccessRights : [initialValue ,Validators.required]
0 голосов
/ 29 июня 2019

удалите привязку свойства выделения и просто обновите значение элемента управления формы, которое будет соответствовать элементу html

<mat-selection-list formControlName="AccessRights" >
    <mat-list-option *ngFor="let tta of typesOfAccess; let i = index" [value]="i+1">
      {{tta[i+1]}}
     </mat-list-option>
</mat-selection-list>

установите значение AccessRights при создании группы форм

this.UserEditForm = this.formBuilder.group({
      is2FAEnabled:[''],
      AccessRights : ['2',Validators.required]
    });

или установите значение вручную следующим образом:

this.UserEditForm.get('AccessRights').setValue('2'); // will select Tag MPxN

Обновлено ??

Вам необходимо отправить базу массива выбранных элементов, например [1,3]

this.UserEditForm.get('AccessRights').setValue([1,3]); // ?

, если вы хотите выбрать одно значение точно так же, как это

this.UserEditForm.get('AccessRights').setValue([3]); // ?

демо ??

...