angular - 带有模板参考同步问题的角度 5 验证
问题描述
我在组件“reports-view.component.html”中有一个表单,输入控件很少(带有标签)。表单标题是:
<form #gform="ngForm" (ngSubmit)="submit()" autocomplete='off'>
然后在我要验证的每个 INPUT 标签上使用(例如日期控制!!):
<div class="form-group">
<label class="control-label" for="startDate">
{{'Reports-view.start' | translate }}
</label>
<input #datestart="ngModel" type="datetime-local" class="form-control" id="startDate" name="datestart"
[value]="startDate" required ngModel (input)='changeStartDate($event.target.value)' />
<div *ngIf="datestart.invalid && (datestart.dirty || datestart.touched)" class="alert alert-danger">
error
</div>
</div>
Datetime-Local 控件由 Current Time 启动:[value]="startDate"
现在,在表格的底部,我有:
<div class="form-actions col-ms-12">
<button type="submit" class="btn btn-success text-white" [disabled]="!gform.valid">
{{'Reports-view.report' | translate }}
</button>
</div>
<div class="form-actions col-ms-12">
<button type="cancel" class="btn btn-success text-white" (click)='goBack()'>
{{'Reports-view.cancel' | translate }}
</button>
</div>
正如所见,提交按钮根据表单验证被禁用和启用:[disabled]="!gform.valid"
SCSS 是:
input:invalid {
border: 2px solid red;
}
input:valid {
border: 2px solid #b1a9a9;
}
问题是:
- 初始化页面时,使用日期(如当前)初始化时输入 datetime-local 类型的输入边框不是红色但表单无效,因此提交按钮被禁用!!!,直到我更改日期或时间! !!
- 初始化页面时,我有一个文本类型的 EMPTY INPUT (边框为 RED )。此输入由另一个选择框提供。在选择了一些空输入(上面)填充后,红色边框消失但表单仍然无效,因此提交按钮被禁用,直到我删除或添加一个字符到“空输入框”(现在与选定的文本)。
另一个现象是,当页面用空输入元素初始化时,边框用红色着色,但带有错误消息的 div 不显示!!!
解决方案
推荐阅读
- java - 是否可以在 Android 中添加由标准视图组成的自定义视图并在代码中使用它,但布局只知道标准视图?
- graphql - AttributeError:“产品”对象没有属性“节点”
- sql - 如何在一组集合中以特定顺序对 sql 中的行进行分组
- mysql - 根据字符或数字选择子字符串
- assembly - 如何用 movl 理解这个汇编代码?
- firebase - 有没有办法通过 REST API 连接 Firestore 数据库而不使用 Auth 2.0 身份验证
- c++ - unicode utf-16 代理对打印问题
- mongodb - MongoSQLd 未在 Windows 上启动
- oracle - 使用Oracle(SUBSTRING或REGEXP_SUBSTR)的字符串的子字符串当有多个Matches时
- python - Python从父目录外的包导入子包