Angular 5 使用动态名称验证控件
Angular 5 Validate Control with Dynamic Name
我认为这很简单。我有以下 HTML 块按预期工作:
<label class="mb-0 form-label">
Doc Part
</label>
<input type="number" name="DocPart" #DocPart="ngModel" class="form-control"
[(ngModel)]="docSetting.DocPart" required/>
<div [hidden]="DocPart.valid || DocPart.pristine" class="alert alert-danger">
This field is required
</div>
上面很简单,当控件变脏和为空时显示所需的消息。现在我有一些表单,其中控件的名称必须是动态的,如下所示:
<label class="mb-0 form-label">
Doc Part
</label>
<input type="number" name="DocPart{{j}}" class="form-control"
[(ngModel)]="docSetting.DocPart" required/>
<div hidden="DocPart{{j}}.valid" class="alert alert-danger">
This field is required
</div>
这行不通。所需的消息永远不会显示。必须有一种简单的方法来访问像这样的动态命名的控件。怎么样?
在上面的代码中,docSetting 是 ngFor 循环中的一个对象。 DocPart 是该对象的属性之一。
这应该可行,因为 *ngFor
为模板变量创建了一个 'scope':
<label class="mb-0 form-label">
Doc Part
</label>
<input type="number" name="DocPart{{j}}" #myInput="ngModel" class="form-control"
[(ngModel)]="docSetting.DocPart" required/>
<div hidden="myInput.valid" class="alert alert-danger">
This field is required
</div>
你有自己独特的名字,但#myInput
可以相同。
我认为这很简单。我有以下 HTML 块按预期工作:
<label class="mb-0 form-label">
Doc Part
</label>
<input type="number" name="DocPart" #DocPart="ngModel" class="form-control"
[(ngModel)]="docSetting.DocPart" required/>
<div [hidden]="DocPart.valid || DocPart.pristine" class="alert alert-danger">
This field is required
</div>
上面很简单,当控件变脏和为空时显示所需的消息。现在我有一些表单,其中控件的名称必须是动态的,如下所示:
<label class="mb-0 form-label">
Doc Part
</label>
<input type="number" name="DocPart{{j}}" class="form-control"
[(ngModel)]="docSetting.DocPart" required/>
<div hidden="DocPart{{j}}.valid" class="alert alert-danger">
This field is required
</div>
这行不通。所需的消息永远不会显示。必须有一种简单的方法来访问像这样的动态命名的控件。怎么样?
在上面的代码中,docSetting 是 ngFor 循环中的一个对象。 DocPart 是该对象的属性之一。
这应该可行,因为 *ngFor
为模板变量创建了一个 'scope':
<label class="mb-0 form-label">
Doc Part
</label>
<input type="number" name="DocPart{{j}}" #myInput="ngModel" class="form-control"
[(ngModel)]="docSetting.DocPart" required/>
<div hidden="myInput.valid" class="alert alert-danger">
This field is required
</div>
你有自己独特的名字,但#myInput
可以相同。