【发布时间】:2017-11-29 02:31:51
【问题描述】:
我在我的应用程序中使用ReactiveFroms。当我添加static 控件时,一切正常。
我使用inbuilt 类controls 显示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。
【问题讨论】:
-
使用 valForm.get('myControllName')
-
请更新插件
-
@yurzui 我不知道如何在 HTML 中访问控制,这就是我没有更改它的原因。你在说这个笨蛋吗plnkr.co/edit/j7IzMcBsazrhLjZAAO4D
-
.get(['banks', i, 'bankName'])其中i是索引plnkr.co/edit/BWrz6tTe9Smo2UR3pyIz?p=preview -
谢谢@yurzui 它很好(y)
标签: angular form-control angular-reactive-forms formarray