Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angular/31.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Angular 从日期开始的角度形式验证应大于到日期_Angular_Angular Forms - Fatal编程技术网

Angular 从日期开始的角度形式验证应大于到日期

Angular 从日期开始的角度形式验证应大于到日期,angular,angular-forms,Angular,Angular Forms,我创建了一个小的反应式表单验证 表单验证工作正常,但当我更改fromDate后,我将更改为toDate时,时间验证不起作用 如果我按相反的顺序进行验证,那么验证就会起作用 这里我添加了我的Stackblitz,请帮助我,我如何克服这个问题您的问题与您使用自定义时间验证器的方式有关。发生的事情是,在您拥有toDate值之前,尝试验证fromDate 因此,您的表单如下所示: this._formGroup = this._formbuilder.group({ FirstNam

我创建了一个小的反应式表单验证 表单验证工作正常,但当我更改
fromDate
后,我将
更改为toDate
时,时间验证不起作用

如果我按相反的顺序进行验证,那么验证就会起作用


这里我添加了我的Stackblitz,请帮助我,我如何克服这个问题

您的问题与您使用自定义时间验证器的方式有关。发生的事情是,在您拥有
toDate
值之前,尝试验证
fromDate

因此,您的表单如下所示:

    this._formGroup = this._formbuilder.group({
      FirstName: ["", [Validators.required]],
      LastName: ["", [Validators.required]],
      _gender: ["1", [Validators.required]],
      _dob: ["", [Validators.required]],
      _fromDate: ["", [Validators.required, formvalidation.comparedate]],
      _ToDate: ["", [Validators.required, formvalidation.comparedate]]
    });
您的自定义验证器看起来是这样的

  static comparedate(control: AbstractControl) {
    if (control.parent) {
      let _fromDate = (<FormGroup>control.parent).get("_fromDate").value;
      let _netDate = (<FormGroup>control.parent).get("_ToDate").value;
      if (_fromDate <= _netDate) {
        (<FormGroup>control.parent).get("_fromDate").clearValidators;
        (<FormGroup>control.parent).get("_ToDate").clearValidators;
        return null;
      } else {
        return { Datecompare: null };
      }
    }
因此,在这个验证器中,我首先检查两个控件是否都有值,如果它们都有值,然后检查是否应该出现
Datecompare
错误。在验证有效的情况下(\u formDate<\u toDate),我将从
\u toDate
\u fromDate
控件中删除错误


这是一份工作

我的回答解决了你的问题吗?晚餐兄弟非常感谢。。
  static comparedate(control: AbstractControl) {
    if (control.parent) {
      let _fromDate = (<FormGroup>control.parent).get("_fromDate").value;
      let _toDate = (<FormGroup>control.parent).get("_toDate").value;

      if (_fromDate && _toDate) {
        if (_fromDate >= _toDate) {
          control.parent.get("_toDate").setErrors({ Datecompare: true });
          control.parent.get("_fromDate").setErrors({ Datecompare: true });
          return { Datecompare: true };
        }
        control.parent.get("_toDate").setErrors(null);
        control.parent.get("_fromDate").setErrors(null);
        return null;
      }

      return null;
    }
  }