как отобразить значение FormControl в label?

#angular

#angular

Вопрос:

У меня есть FormGroup, которая содержит FormArray. Каждый FormControls в FormArray генерируется системой, поэтому он выглядит следующим образом:

    staffs: FormArray =  { staffs: [
    {id: 1, staffName: "Jimmy", staffRate: 10},
    {id: 2, staffName: "Steffan", staffRate: 20},
    {id: 3, staffName: "Devon", staffRate: 30},
    {id: 4, staffName: "Jonah", staffRate: 50}
    ]}
  

Теперь я хочу отобразить весь персонал в компоненте html, но я понятия не имею, как отобразить staffName внутри метки.

html-код выглядит следующим образом

 get staffsFA(): FormArray {
  return this.form.get('staffs') as FormArray ;
}  
 <form [fromGroup]="form">
....
<ng-container formArrayName="staffs">
  <ng-container *ngFor="let sdr of staffsFA.controls; let i=index;">
    <div class="row" [formGroupName]="i">
      <label>[I want staff name in here]</label>
      <input type='text' formControlName="staffRate">
    </div>
  </ng-container>
</ng-container>
....
< /form>  

Примечание: я использую Angular 7.

Ответ №1:

В вашем component.ts,

Вы можете получить доступ к значениям элементов управления формой, определенным в вашей реактивной форме, выполнив что-то вроде этого:

 console.log(this.staffs.value)
  

В случае доступа к значениям каждого элемента в FormArray вы можете сделать это:

 console.log(this.staffs['controls']['staffs']['controls'].value)
  

Или

 console.log(this.staffsFA.value)
  

Аналогично, на вашем component.html вы можете получить доступ к отдельным значениям элемента управления формой, используя интерполяцию шаблона:

    <ng-container *ngFor="let sdr of staffsFA.controls; let i=index;">
    <div class="row" [formGroupName]="i">
      <label>{{ sdr.value.staffName }}</label>
      <input type='text' formControlName="staffRate">
    </div>
  </ng-container>
  

Комментарии:

1. о, здорово. Это работает. Я никогда не знал, что могу получить к нему такой доступ

2. что, если я не хочу использовать ввод и хочу сохранить его как переменную, доступную только для чтения?