Javascript “起始日期”和“截止日期”的模板驱动表单验证

Javascript “起始日期”和“截止日期”的模板驱动表单验证,javascript,html,angular,Javascript,Html,Angular,我正在尝试为模板驱动表单中的“开始日期”和“结束日期”控件添加验证。如何验证它们,例如“开始日期应大于结束日期”,反之亦然。 此外,我还考虑在我的应用程序中对不同的“从日期”和“到日期”控件重复使用此验证。因此,如果使用tempalte驱动的表单,则在日期输入中有一个ngModel。对于验证,您可以检查日期模型的值并进行验证。要知道您的模型是否更改,您可以使用ngModelChange。因此,如果您使用tempalte驱动的表单,您的日期输入中就有一个ngModel。对于验证,您可以检查日期模型

我正在尝试为模板驱动表单中的“开始日期”和“结束日期”控件添加验证。如何验证它们,例如“开始日期应大于结束日期”,反之亦然。
此外,我还考虑在我的应用程序中对不同的“从日期”和“到日期”控件重复使用此验证。

因此,如果使用tempalte驱动的表单,则在日期输入中有一个ngModel。对于验证,您可以检查日期模型的值并进行验证。要知道您的模型是否更改,您可以使用ngModelChange。

因此,如果您使用tempalte驱动的表单,您的日期输入中就有一个ngModel。对于验证,您可以检查日期模型的值并进行验证。要知道您的模型是否更改,可以使用ngModelChange。

JS可以使用

fromDate=new Date()//今天
toDate=新日期(fromDate.valueOf()+60*60*24)//明天
函数toDateIsLater(fromDate,toDate){
返回toDate>fromDate
}
log(toDateIsLater(fromDate,toDate))
JS可以使用

fromDate=new Date()//今天
toDate=新日期(fromDate.valueOf()+60*60*24)//明天
函数toDateIsLater(fromDate,toDate){
返回toDate>fromDate
}

log(toDateIsLater(fromDate,toDate))
创建一个包含两个表单控件的函数。比较日期,并在出现错误时设置表单控件的错误:

compareDates(from:FormControl,to:FormControl){
const startDate:Date=ConvertYourFormValueToValidDate(from.value);
const endDate:Date=ConvertYourFormValueToValidDate(to.value);
if(startDate.getTime()>endDate.getTime()){
from.setErrors({…from.errors,'oversend':true});
}else if(startDate.getTime()>endDate.getTime()){
to.setErrors({…to.errors,'belowStart':true});
}
}

创建一个包含两个表单控件的函数。比较日期,并在出现错误时设置表单控件的错误:

compareDates(from:FormControl,to:FormControl){
const startDate:Date=ConvertYourFormValueToValidDate(from.value);
const endDate:Date=ConvertYourFormValueToValidDate(to.value);
if(startDate.getTime()>endDate.getTime()){
from.setErrors({…from.errors,'oversend':true});
}else if(startDate.getTime()>endDate.getTime()){
to.setErrors({…to.errors,'belowStart':true});
}
}

作为旁注,我没有设置
else
条件:我会让你设置,这样它可以清除两个表单控件上的两个错误。模板驱动的表单使用表单控件。验证绑定到表单控件(或表单组)。如果你认为
[(ngModel)]
的意思是“模板驱动”,那你就错了。顺便说一句,我没有把
的else
条件放在这里:我让你做,这样它就可以清除两个表单控件上的两个错误。模板驱动的表单使用表单控件。验证绑定到表单控件(或表单组)。如果你认为
[(ngModel)]
是“模板驱动”的意思,那你就错了。这应该是一个注释(它并没有真正回答这个问题)是的,但是有可能让我的应用程序中的所有开始日期和结束日期控件都有一个共同的指令吗?@akhilanair你应该看看我对这个“指令”的回答。我所给出的函数应该适用于任何形式的控件,您可以将其传递给所有的地方。对于这个答案的OP,下次您评论我的答案时,考虑留下您的评论,即使您错了:很多人不知道与双向绑定和模板驱动的形式的区别,这也可能对他们有所帮助。@trichetriche谢谢。我会尽力确保这应该是一个评论(但它并没有真正回答问题)是的,但有可能让我的应用程序中的所有开始日期和结束日期控件共用一个指令吗?@akhilanair你应该看看我对该“指令”的回答。我所给出的函数应该适用于任何形式的控件,您可以将其传递给所有的地方。对于这个答案的OP,下次您评论我的答案时,考虑留下您的评论,即使您错了:很多人不知道与双向绑定和模板驱动的形式的区别,这本可以帮助他们的。@trichetriche谢谢。我一定会努力的