我使用角度反应形式,我想要有效的格式,我的日期优先(在现有的两个验证器之前)。我的有效格式是dd/MM/YY(不是 dd/MM/YY)。我使用引导v4日期选择器。
My form:
this.myForm = this.fb.group({
'day': ['', [Validators.required, minDateValidator(this.todayMoment.toDate()), businessDayValidator()]]
});我的勇士:
export function minDateValidator(minDate: Date): ValidatorFn {
return (control: AbstractControl): {[key: string]: any} | null => {
const invalid = control.value < minDate.setHours(0, 0, 0);
return invalid ? {'minDate': {value: control.value}} : null;
};
}
export function businessDayValidator(): ValidatorFn {
return (control: AbstractControl): {[key: string]: any} | null => {
const invalid = !DateUtilsService.isBusinessDay(moment(control.value));
return invalid ? {'businessDay': {value: control.value}} : null;
};
}我尝试添加这个Validators.pattern('(2|1)[0-9]{3}-[0-9]{2}-[2-9]{2}.*')
在线regex exec没有问题,但没有角度(打印此错误):
{ "pattern": { "requiredPattern": "^(2|1)[0-9]{3}-[0-9]{2}-[2-9]{2}.*$", "actualValue": "2019-04-15T10:00:00.000Z" } }发布于 2019-04-11 10:07:08
引导数据报警器的问题是“值是日期而不是字符串”。
this.myForm = this.fb.group({
'day': ['', [Validators.required, formatValidator(), minDateValidator(this.todayMoment.toDate()), businessDayValidator()]]
});
export function formatValidator(): ValidatorFn {
return (control: AbstractControl): {[key: string]: any} | null => {
const dateRegEx = new RegExp('^(2|1){1}[0-9]{3}.[0-9]{2}.[0-9]{2}.*$');
const dateInput = control.value as Date;
const match = dateInput.toISOString && dateRegEx.test(dateInput.toISOString());
return match ? null : {'formatValidator': {value: control.value} };
};
}发布于 2019-04-11 09:06:30
将模式作为正则表达式传递,而不是字符串,如: Validators.pattern(/^(2|1)0-9{3}-0-9{2}-2-9{2}.*/)
https://stackoverflow.com/questions/55627689
复制相似问题