我有一个用于创建新实体的表单,如下所示:
<form #createAppForm="ngForm"
(ngSubmit)="createApplication(createAppForm.value)"
autocomplete="false" novalidate>
<div class="form-group"
[ngClass]="{'error': createAppForm.controls.applicationName?.invalid && createAppForm.controls.applicationName?.touched}">
<label for="applicationName">Application Name</label>
<em *ngIf="createAppForm.controls.applicationName?.invalid && createAppForm.controls.applicationName?.touched">Required</em>
<input name="applicationName" required id="applicationName" type="text"
class="form-control" placeholder="Name of application..." />
</div>
我没有在输入中使用ngModel,因为表单出现时应该是空白的,并且我将createAppForm.value提交给ngSubmit . 但是,每当我检查表单的有效属性时:
{{createAppForm.invalid}}
总是返回false,即使我单击输入字段并单击,也没有填写任何内容 . 作为必填字段,它是否应该返回true?
我使用了类似的形式,编辑数据,在那里我使用[ngModel]并且工作正常,验证了必需的字段 . 这里是否需要[ngModel],如果是这样,为什么呢?因为我正在传递表格的 Value .
2 回答
您需要将ngModel添加到输入中才能使用Angular的表单验证 .
简而言之,ngForm仅检查具有ngModel和名称的元素 . 没有这些,Angular将无法验证 .
把它改成这个:
More info on the official docs.
您是否创建了一个formcontrol,在该表单控件中您必须放置所有验证 .