angular7 - Angular 7:修改此自定义验证器,使其正确检查大于 1 的值
问题描述
在我的 Angular 7 应用程序中,我制作了一个自定义验证器,它应该检查输入到表单控件中的值是否大于或等于 2。
我的自定义验证器:
static greaterThanOne(control: AbstractControl) {
const v = control.value;
if ( v >= 2) {
return null;
} else {
return { greaterThanOne: true };
}
}
我的 HTML
<div class="col-lg-2">
<label class="sr-only" for="dependency-section-2-3"> How many people are in the
household?</label>
<input
required
maxlength=2
numericOnly
formControlName="studentHouseHold"
name="studentHouseHold"
id="studentHouseHold"
class="form-check-input"
data-hint="yes"
type="text"
class="form-control col-4"
data-hint="yes"
value=""
>
<div *ngIf="sectionTwo.studentHouseHold.errors && sectionTwo.studentHouseHold.touched"
class="alert text-danger m-0 p-0 col-md-12">
<div
*ngIf="sectionTwo.studentHouseHold.touched && sectionTwo.studentHouseHold.invalid && sectionTwo.studentHouseHold.errors.greaterThanOne && sectionTwo.studentHouseHold.errors.earningsFormat && !sectionTwo.studentHouseHold.errors.required"
class="alert text-danger m-0 p-0 col-md-12">
Invalid entry.
</div>
<div *ngIf="sectionTwo.studentHouseHold.errors.required">This field is required.</div>
</div>
</div>
需要注意的一些事项...我无法将输入类型从“文本”更改为“数字”。为了解决这个问题,我制作了一个自定义指令“numericOnly”,它只允许用户输入数字。我只需要修改自定义验证器,以便用户输入的任何值都必须大于或等于 2。
我还尝试将 angulars 验证器 Validator.min(2) 添加到我的表单控件中,但这不起作用。
解决方案
经过一些测试,这实际上是编写验证器的正确方法:
static greaterThanOne(control: AbstractControl): { [key: string]: boolean } {
const isValidNum = (/^([2-9]|1[0-9]|2[0-9]|3[0-9]|4[0-9]|5[0-9]|6[0-9]|7[0-9]|8[0-9]|9[0-9])$/).test(control.value);
return isValidNum ? null : { greaterThanOne: true };
}
如果有人遇到类似的问题,希望这会有所帮助。
推荐阅读
- neo4j - Neo4j 将路径大小大于 3 的位置合并到我的查询中,该查询定义了 2 个不同的节点标签
- c - ATtiny817 Xplained 迷你 RTC 配置
- php - 我正在尝试在 php 中将一个网站的内容加载到另一个网站
- swift - 结果不正确的领域结果对象(iOS,Swift)
- android - 未签名生成的 APK 在 Android 设备上不起作用
- security - 服务器到服务器集成的 Oauth2 授权类型
- python - 为什么我所做的更改(使用 pickle 模块)没有保存?
- javascript - Node.js 中的 fs readFile 代码不知何故坏了
- python - 如何在 python-docx 中获取单元格背景颜色?
- python - Pandas 多索引将浮点数更改为字符串