【发布时间】:2018-12-11 16:03:27
【问题描述】:
我想为以下输入类型显示 2 条不同的验证消息
<input type="number" step="1" formControlName="Ordinal" />
我正在使用具有与此类似的 formGroup 的反应式表单
formBuilder.group({
..
Ordinal: [0, [Validators.required, CustomValidators.integer]],
..
});
如果根本没有输入,一个验证器Validators.required 应该显示一条必需的消息。如果输入了无效号码,另一个验证器Validator.integer 应该会显示一条消息。
Validation.integer 的当前实现如下所示
export function integer(control: FormControl) {
const value = control.value;
if ((parseFloat(value) === parseInt(value, 10)) && !isNaN(value) || value === '' || value === null) {
return null;
} else {
return {
notNumeric: true
};
}
}
我的问题是type="number" 浏览器在两种情况下都会返回null(输入为空/数字无效时)。
如何区分这两种状态?
【问题讨论】:
-
你为什么要这个条件? (parseFloat(value) === parseInt(value, 10)
-
只是检查它是否是整数。但是很好的问题,为什么我不只使用 Number.isInteger()。老实说我不记得了,我第一次写这篇文章是很久以前的事了
标签: angular angular-reactive-forms