nan*_*ots 5 validation html5 typescript angular
我有一个用模型生成的输入字段列表.我正在尝试为他们添加验证.要求是它们不应为空或少于2个字符.问题在于文档中仅显示使用非动态生成的变量Name进行验证.我的字段都是动态生成的.所以没有tempVariableName我可以硬编码(否则它们会冲突),所以我从我将字段绑定到的属性的名称创建了temp变量.所以我提出了这样的事情:
<div *ngFor="let field of connector.configFields">
<label>{{field.name}}</label>
<input [(ngModel)]="field.value" [type]="field.name === 'Password' ? 'password' : 'text'"
placeholder="{{field.name}} (required)"
ngControl="[fieldName+field.name]"
required minlength="2"
#fieldName+[field.name]="ngModel" />
<div *ngIf="(fieldName+[field.name]).errors && ((fieldName+[field.name]).dirty || (fieldName+[field.name]).touched)">
<span *ngIf="(fieldName+[field.name]).errors.required">Enter Name</span>
<span *ngIf="(fieldName+[field.name]).errors.minlength">Name minimum at 2 characters</span>
</div>
</div>
Run Code Online (Sandbox Code Playgroud)
typescript中的configFields如下所示:
export class FieldModel {
public name: string;
public type: string;
public value: any;
Run Code Online (Sandbox Code Playgroud)
}
但这根本行不通.我是角度2的新手,所以我不确定我做错了什么.
您可以index对阵列中的每个字段使用唯一.将它与name属性(和ngModel)一起使用,它将分别评估每个表单控件.因此每个输入字段都有唯一的名称,例如:
name="f{{i}}"
Run Code Online (Sandbox Code Playgroud)
我们{{i}}从迭代中得到的地方:
<div *ngFor="let field of connector.configFields; let i = index">
Run Code Online (Sandbox Code Playgroud)
最后,您的模板可能如下所示:
<form #myForm="ngForm">
<div *ngFor="let field of connector.configFields; let i = index">
<input name="f{{i}}" [(ngModel)]="field.value" [type]="field.name === 'Password' ? 'password' : 'text'" required #f="ngModel" minlength="2"/>
<div *ngIf="f.errors && (f.dirty || f.touched)">
<div *ngIf="f.errors.required"> This field is required </div>
<div *ngIf="f.errors.minlength"> Min 2 chars </div>
</div>
</div>
</form>
Run Code Online (Sandbox Code Playgroud)
这是现场直播
| 归档时间: |
|
| 查看次数: |
5005 次 |
| 最近记录: |