Angular 手动键入时,材料日期选择器无效
我有一个dd/MM/yyyy格式的mat日期选择器,通过在calandar中选择,它可以正常工作,但当我手动键入日期高于12的日期时(例如,2019年1月27日),它无效。 html: 有什么可以帮忙的吗?我添加了一个解析器: 添加名为date-format.ts的新ts文件:Angular 手动键入时,材料日期选择器无效,angular,angular-material,Angular,Angular Material,我有一个dd/MM/yyyy格式的mat日期选择器,通过在calandar中选择,它可以正常工作,但当我手动键入日期高于12的日期时(例如,2019年1月27日),它无效。 html: 有什么可以帮忙的吗?我添加了一个解析器: 添加名为date-format.ts的新ts文件: import { NativeDateAdapter } from '@angular/material'; import { MatDateFormats } from '@angular/material/core'
import { NativeDateAdapter } from '@angular/material';
import { MatDateFormats } from '@angular/material/core';
export class AppDateAdapter extends NativeDateAdapter {
parse(value: any): Date | null {
var dateParts = value.split("/");
if (dateParts.length != 3)
dateParts = value.split("-");
if (dateParts.length != 3)
return null;
if (dateParts[2] >= 0 && dateParts[2] <= 50)
dateParts[2] = '20' + dateParts[2];
return new Date(dateParts[2], dateParts[1] - 1, +dateParts[0]);
};
}
很可能是因为它采用的是美国格式,即月/日/年。因此,不能高于12月12日。请检查此链接以了解自定义日期格式,并按如下方式输入
{ provide: MAT_DATE_LOCALE, useValue: 'en-GB' },
import { NativeDateAdapter } from '@angular/material';
import { MatDateFormats } from '@angular/material/core';
export class AppDateAdapter extends NativeDateAdapter {
parse(value: any): Date | null {
var dateParts = value.split("/");
if (dateParts.length != 3)
dateParts = value.split("-");
if (dateParts.length != 3)
return null;
if (dateParts[2] >= 0 && dateParts[2] <= 50)
dateParts[2] = '20' + dateParts[2];
return new Date(dateParts[2], dateParts[1] - 1, +dateParts[0]);
};
}
import {DateAdapter, MAT_DATE_FORMATS} from '@angular/material/core';
import { AppDateAdapter, APP_DATE_FORMATS } from 'src/app/helpers/date-format';
@Component({
selector: 'app-root',
templateUrl: 'app.component.html',
styleUrls: ['app.component.css'],
providers: [{provide: DateAdapter, useClass: AppDateAdapter},
{provide: MAT_DATE_FORMATS, useValue: APP_DATE_FORMATS}]
})