angular - 如何验证日期并在格式不正确时显示错误
问题描述
我有一个约会(和momentjs)。日期必须采用 DD/MM/YYYY 格式。
我的hmtl代码是:
<mat-form-field>
<input id="datanint" formControlName="dateBirth" matInput [matDatepicker]="picker" />
<mat-datepicker-toggle matSuffix [for]="picker"></mat-datepicker-toggle>
<mat-datepicker #picker startView="multi-year" [startAt]="startDate"></mat-datepicker>
</mat-form-field>
我的控制是:
dateBirth: [DateValidator.validateDate],
这是我的验证器:
export class DateValidator implements Validators {
static validateDate(fdValue: AbstractControl) {
regexDate="...:";
console.log(fdValue);
if(fdValue != null && fdValue.value!= null && fdValue.value.match(regexDate) {
return { pattern: true };
}
}
问题是,当我输入这样的日期(2000 年 13 月 13 日)时,我希望在我的错误中(在表单控件中)有pattern error
但不是这样,因为
fdValue.value
等于 null(当输入值为2000 年 13 月 13 日)。我需要它fdValue.value
(或者我可以用来获取正确值的东西)在输入值中必须相同,而且日期格式也不正确。
解决方案
在这个 Scenerio 中,您无法获取 fromControl 的值,它会始终显示 nullconsole.log(fdValue.value);
因为您可能在 datepicker 输入中传递了一些无效输入。因此,当您将无效值放入 datepicker 时,您fdValue
的值为 null 但您仍然可以在error
对象中获取输入
static validateDate(fdValue: AbstractControl) {
const date = fdValue.value;
console.log('date: ',fdValue);
console.log('error: ',fdValue.errors?.matDatepickerParse?.text);
if (date ===null || date==='') return { requiredFromDate: true };
}
但是当您输入无效的日期输入时,您将得到fdValue.value
错误null
对象包含该输入值
要检查代码,请检查angular-customvalidator-by-naib
推荐阅读
- perl - 将 URL 文件(网站快捷方式)作为电子邮件附件发送
- python - 带有 if/else 语句的嵌套列表理解
- sql - Oracle SQL - UNION ALL 返回行,即使它们不存在
- flutter - Flutter:垂直文本小部件
- xml - 使用 SOAP::Lite 解析 XML 响应
- php - 以正确的方式删除 WooCommerce 侧边栏 - TwentySeventeen?
- sql - 如何进行此查询
- sql - SQL从右边选择最后一个数字
- android - Flutter:关于命名和初始路由的问题
- python - 给定列表中存在的元素,如何返回包含任何元素出现次数的列表?