【问题标题】:How to access control in HTML defined inside FormArray in component - Angular2如何访问组件中FormArray中定义的HTML中的控件-Angular2
【发布时间】:2017-11-29 02:31:51
【问题描述】:

我在我的应用程序中使用ReactiveFroms。当我添加static 控件时,一切正常。 我使用inbuiltcontrols 显示validation 错误。 使用静态控件工作 Plunkr

但是当我尝试添加dynamic 控件时,我无法访问控件以应用inbuilt 验证。

我在从HTML template 访问控制reference 以应用验证时遇到问题。 我无法弄清楚如何访问控件。 这是 plunkr。

这是我添加动态控件的模板:

  <form [formGroup]="valForm" class="form-validate form-horizontal"  >
<div formArrayName="banks">
     <div *ngFor="let bank of bankArray.controls;let i = index" [formGroupName]="i">
        <legend>Bank Details</legend>
    <fieldset>
        <div class="form-group">
            <label class="col-sm-2 control-label">Name of the Bank</label>
            <div class="col-sm-6">
                <input class="form-control " type="text" placeholder="Enter Bank Name" formControlName="bankName" [formControl]="valForm.controls['banks']" />
                <span class="text-danger" *ngIf="valForm.controls['bankName'].hasError('required') && (valForm.controls['bankName'].dirty || valForm.controls['bankName'].touched)">This field is required</span>
            </div>
        </div>
    </fieldset>
    </div>
 </div>
 <button (click)="addNewBank()">Add New Bank</button>
 </form>

我无法弄清楚如何访问formControl 以添加验证。我尝试了各种方法,例如:

       valForm.controls['banks'][bankName]; //Not working
       valForm.controls['banks'][0][bankName] //Not working

         <input class="form-control " type="text" placeholder="Enter Bank Name" formControlName="bankName" [formControl]="valForm.get('bankName')" />
                <span class="text-danger" *ngIf="valForm.controls['bankName'].hasError('required') && (valForm.get('bankName').dirty || valForm.get('bankName').touched)">This field is required</span> //Not working

这是plunker

【问题讨论】:

标签: angular form-control angular-reactive-forms formarray


【解决方案1】:

我看到了几个选项

valForm.get(['banks', i, 'bankName'])
valForm.get('banks.' + 'i' + '.bankName')

bankArray.get([i, 'bankName'])
bankArray.get(i + '.bankName')

bankArray.at(i).get('bankName')

【讨论】:

猜你喜欢
  • 2021-05-14
  • 2018-01-26
  • 1970-01-01
  • 2016-05-15
  • 2021-10-16
  • 2021-06-10
  • 2014-12-09
  • 2016-02-02
  • 1970-01-01
相关资源
最近更新 更多