问题描述
this.testForm = this.formBuilder.group(
{
beginDate: ['',[Validators.required]],endDate: ['',username: ['',},{ }
);
我想为每个值放置一个特定的验证器,所以 beginDate应该为01.xx.xxxx(应始终为该月的第一天) endDate应该为25.xx.xxxx(应始终为当月的25) 用户名应以“ p”字母开头。
有什么更好的方法? 我可以创建一个验证器并使用if / else进行检查,但这不是很漂亮:
this.testForm = this.formBuilder.group(
{
beginDate: ['',{ validator: this.checkValue}
);
为fromgroup的每个值都配备一个验证器是更好的方法吗?
解决方法
您可以尝试如下所示的自定义验证器。
function dayOfMonthValidator(date: number): ValidatorFn {
return (control: AbstractControl): {
[key: string]: boolean
} | null => {
let { value } = control;
if (Object.prototype.toString.call(control.value) !== "[object Date]")
value = Date.parse(value);
return value.getDate() === date
? null
: { "dayOfMonth": true }
};
}
并按如下所示使用它:
this.testForm = this.formBuilder.group(
{
beginDate: ['',[Validators.required,this.dayOfMonthValidator(1)]],endDate: ['',this.dayOfMonthValidator(25)]],username: ['',[Validators.required]],},);