angular - 在Angular 12中手动输入日期时,Angular Date Picker将无效的日期格式转换为有效的日期
问题描述
我正在为日期选择器使用自定义日期适配器,当我从选择器中选择日期时,它的格式很好,但是当手动输入不正确的日期时,它被格式化为有效日期,而不是在输入字段上显示错误。例如,当我输入:01/01/01
作为日期时,它的格式为:01/01/1901
但我想在输入不正确的日期时显示错误。我该如何帮助解决这个问题?
这是自定义日期适配器的代码:
import { NativeDateAdapter } from "@angular/material/core";
export class CustomDateAdapter extends NativeDateAdapter {
parse(value: any): Date | null {
if ((typeof value === 'string') && (value.indexOf('/') > -1)) {
const str = value.split('/');
const year = Number(str[2]);
const month = Number(str[1]) - 1;
const date = Number(str[0]);
return new Date(year, month, date) || null;
}
const timestamp = typeof value === 'number' ? value : Date.parse(value);
return isNaN(timestamp) ? this.invalid() : new Date(timestamp);
}
format(date: Date, displayFormat: Object): string {
date = new Date(Date.UTC(
date.getFullYear(), date.getMonth(), date.getDate(), date.getHours(),
date.getMinutes(), date.getSeconds(), date.getMilliseconds()));
displayFormat = Object.assign({}, displayFormat, { timeZone: 'utc' });
const dtf = Intl.DateTimeFormat(this.locale, displayFormat);
return dtf.format(date).replace(/[\u200e\u200f]/g, '');
}
}
这是我的 module.ts 文件:
import { DateAdapter} from '@angular/material/core';
import { CustomDateAdapter } from './custom-date-adapter';
providers: [
{ provide: DateAdapter, useClass: CustomDateAdapter }
]
这是日期选择器代码:
<mat-form-field class="w-100">
<mat-label>PAYG start date</mat-label>
<input matInput [matDatepicker]="picker" [max]="maxDate" formControlName="paygStartDate" required
placeholder="DD/MM/YYYY">
<mat-datepicker-toggle matSuffix [for]="picker"></mat-datepicker-toggle>
<mat-datepicker #picker startView="multi-year"></mat-datepicker>
</mat-form-field>
请帮助我在字段中输入错误日期时显示错误,而不是将错误日期转换为有效日期。
解决方案
推荐阅读
- haskell - 使用 Aeson 读取对象的单个字段,无需编写 FromJSON 实例
- python - 如何计算我的数据集中的移动平均值?
- react-native - 无法将数据输入从一个屏幕传递到另一个屏幕。反应原生
- css - Bootstrap 4 - 下拉链接中的 H3
- node.js - 在 Node JS 中处理多个 HTTP 请求
- datetime - 如果日期时间值存在于日期时间值列表中,则为条件格式
- jenkins - 如何配置 Jenkins 以并行运行我的测试用例?
- excel - 如何自动将excel查询导入excel文件?
- java - 什么是hibernate中的聚合、委托和关联?
- javascript - 如何使用 foreach 循环格式化美国电话号码?