表单验证Angular 4 |多领域验证|根据其他字段在空字段上设置错误

时间:2018-07-02 10:08:31

标签: typescript angular4-forms

我有一个表单,其中有两个字段(“ 自日期”和“ 至日期”)以及其他字段。 要求:

  1. 用户只能提供“ 自日期

  2. 如果两个日期都指定为“ 自日期”,则不得大于“ 至日期”;如果给定的是<< em> To Date ,则用红色下划线。

  3. 如果仅提供“ 到日期”,则“ 自日期”将用红色下划线。

为此,我使用了来自frombuilder的“ SrchForm”:

myForm(){
    this.srchGrp = this.SrchForm.group({
       //other FormcontrolNames
       from_date : '',     // from_date controlname for 'From Date' field
       to_date : '',       // to_date controlname for 'To Date' field
    }, {validator:  this.fromNtoValidate('from_date', 'to_date')})
 }

然后

fromNtoValidate(from_date, to_date){
    return (group: FormGroup)=>{
        let fromdate = group.controls['from_date'],
        let todate = group.controls['to_date'],

        if(formdate.value && todate.value){          // if both date provided
          if (formdate.value > todate.value){
             return todate.setErrors({'incorrect' : true});
          }
        }

       if(!formdate.value && todate.value){          // **if Todate provided only
            console.log("only Todate Given"); 
            return fromdate.setErrors({'incorrect' : true});
       } 
   }
}

**if Todate provided only部分未能按预期方式打印Form Date,但未在only Todate Given字段上加红色标记。如果我尝试在todate而不是'fromdate'上设置错误,那么它可以正常工作,但不能在fromdate上工作。

请建议我在这里做什么,并标记我做错了什么地方?

0 个答案:

没有答案