javascript - 确定是否在组件内提交了表单
问题描述
我有一个模板驱动的表单,里面有一个自定义组件,应该处理正常的文本输入,并显示错误消息。
<form name="loginForm" #loginForm="ngForm">
我知道,我的表单名为“loginForm”。在里面我使用我的组件:
<app-input-field2
#loginPagePassField="ngModel"
name="password"
[(ngModel)]="user.password"
required="true"
type="password"
placeholderKey="loginPage.input.password">
</app-input-field2>
(如果重要,实现 ControlValueAccessor ......)它具有“必需”属性,并且在内部,当用户未填写此字段时,我会显示一条错误消息。但是我应该什么时候展示它?首先,当用户触摸但没有填充它时,因此在组件内部,有:
<input
#inputElement="ngModel"
[(ngModel)]="inputValue"
....
<div *ngIf="inputElement.errors && inputElement.touched">
((display error))
</div>
一切正常!但是......即使在用户尝试提交表单后,我也应该显示此错误,但该字段未触及。我应该怎么做才能获得最好的自动版本?...我可以将表单的 isSubmitted 标志传递给组件,但这应该在每次出现时都完成。...也许我可以假设表单的模板名称总是类似于“myForm”,所以我可以对其进行查询,但这很荒谬。我可以在不知道模板名称的情况下以某种方式到达父表单的状态吗?
(我应该使用 Angular5)
一个简单的例子:链接——在这里,我传递了表单,所以我可以简单地说“form.submitted”。这似乎与我拥有的每个组件无关。我想以某种方式避免这种情况。
解决方案
推荐阅读
- mongodb - 更新 mongo db 中数组中的元素
- javascript - 如何在本机反应中绘制带有置信带的折线图
- file - 无法在 Visual D 中使用 `std.file.readText(fileName)` 读取文本文件(引发奇怪的异常)
- node.js - 使用 Sudo 执行 NodeJS 程序,然后使用 spawn 而不使用 sudo
- javascript - Javascript:Axios 网络请求 30s 响应超时
- magento2 - Magento 2.3.4 Authorize.net 网关拒绝错误 33“需要电话”
- c++ - 安装点云库 (PCL) 1.11.0 MSVC 2019 Win32 时出现问题
- android - 使用 Coil Compose 加载本地可绘制对象
- r - R/Rstudio 慢慢占用硬盘存储空间
- django - 如何通过 Axios 和 Vue.js 传递数据,在 DRF 序列化程序中为具有多对多字段的模型编写 create() 函数