我写了一个自定义验证程序,用于检查日期是否高于某个最小日期。Angular 4 - 使用动态参数值的自定义验证程序
的代码如下所示:
export function validateMinDate(min: Date): ValidatorFn {
return (c: AbstractControl) => {
if (c == null || c.value == null)
return null;
let isValid = c.value >= min;
if (isValid) {
return null;
} else {
return {
validateMinDate: {
valid: false
}
};
}
};
}
我initate这样
this.definitionForm = this.fb.group({
"from": [this.details.From, Validators.required],
"to": [this.details.To, [Validators.required, validateMinDate(this.details.From)]]
});
我的形式,我可以看到正在应用的验证,但是当我console.log()
我最小值的验证我可以看到它等于null
。
this.details.From
在我启动表单时从null开始,所以我假设参数不是动态的,只是在表单被设置时才取值。
如何确保在用户选择起始日期时更新最短日期,从而更改this.details.From
的值?
您可以尝试使用验证器作为指令并注入一个服务,您可以使用this.details.From的最新值进行更新。 –
你所要做的就是观看'From'日期,在每次更改中你都必须将验证器重置为控件'to',你使用的是日期选择器吗?或者只是一个简单的输入。 ? –