【发布时间】:2019-11-28 03:05:07
【问题描述】:
当输入无效但仅在提交表单后,我想在我的输入字段下方显示一条错误消息。
我可以简单地使用布尔值并在表单提交后立即切换它,并将其作为显示消息的条件,但我不能在我的应用程序中执行此操作,因为它有点复杂。
在提交响应式表单时,我将每个控件标记为已触摸,并在 *ngIf 中为错误提示使用已触摸的布尔值作为条件。
Object.keys(selectForm.controls).forEach(key => {
selectForm.get(key).updateValueAndValidity();
if(!selectForm.get(key).valid) {
selectForm.get(key).markAsTouched();
}
})
此解决方案并不完美,因为当用户只是“触摸”输入时也会弹出错误提示文本。
<form [formGroup]="selectForm">
<p-dropdown [options]="items" formControlName="selected" placeholder="Select" (onChange)="save()"></p-dropdown>
<p-message *ngIf="selected.invalid && selected.errors.required && selected.touched" severity="error" text="Field is required"></p-message>
</form>
基本上我在看类似nestedForm.get(key).markAsChecked()
但这不存在。
这里的解决方案是什么?
【问题讨论】:
-
您能与我们分享您的 html 吗?你用
FormBuilder吗? -
@ahmeticat 我更新了我的帖子,是的,我确实使用了 FormBuilder
-
您的表单组名称是什么?
selectform或nestedform? -
selectForm 是 nestedForm 的一个子表单,但对它来说并不重要。为了使事情更容易,您可以将其视为相同的形式。我也再次更新了我的帖子,以免造成混乱。
-
希望你不能用form into form
标签: angular