如何验证角形材料日期选择器(非必需)?

时间:2019-07-17 14:17:32

标签: angular validation datepicker angular-material

我正在为角材料日期选择器建立一个验证,该验证是非必填字段。

当需要该字段时,一切都会顺利进行,因为我使用了必需的验证器。但是当我尝试使用自定义验证进行验证时,问题就来了。

我的自定义验证器仅在键入数字时有效,因此我不知道这是否与角形材质日期选择器的内部运行有关。就像事件无法正常进行一样。

示例(我无法发布图片):

如果我在字段上输入09348023948309,则验证效果很好,显示错误并显示红色。

如果我输入abcnssda,则验证不起作用,实际上,它不会触发验证器。

HTML

<mat-form-field>
    <input
      matInput
      [matDatepicker]="picker2"
      class="inputDate"
      name="fechaEjecucion"
      placeholder="Fecha Fin"
      formControlName="fechaEjecucion"     
    />
    <mat-datepicker-toggle matSuffix [for]="picker2"></mat-datepicker-toggle>
    <mat-datepicker #picker2></mat-datepicker>
  </mat-form-field>

验证者:

dateValidator(control: AbstractControl): { [key: string]: boolean } | null {
    if (control.value !== undefined && !Date.parse(control.value)) {
      return { fecha: true };
    }
    return null;
  }

FormGroup:

generaIntervencion() {
    return (new FormGroup({
      idInstalacion: new FormControl(this.instalacionSeleccionada, [Validators.required]),
      fechaCreacion: new FormControl(null, [Validators.required]),
      fechaEjecucion: new FormControl(null, [this.dateValidator]),
      descripcion: new FormControl('', [
        Validators.required,
        Validators.maxLength(20000),
        Validators.pattern('[a-z "¿?/%€(),:;. 0-9 A-ZñÑáéíóúÁÉÍÓÚs]*'),
        removeSpaces
      ]),
      tareasIntervencion: new FormArray([])
    }));
  }

如果用户输入字母,数字等,我想验证该字段。

谢谢

0 个答案:

没有答案