Angular FormControl:如何不清除onBlur事件的输入字段

问题描述

为dateValidator设置onBlur事件时,它将显示错误消息,但是为什么还要清除输入字段?

如果更改为onChange事件,则不会清除输入字段。

我只想在输入字段为'onBlur'时才调用validate函数。如何不让它清除输入字段?

`

 // I've tried the following but still unable to resolve it

  onDate: new FormControl("formControl.get('onDate').value",{
        validators: this.dateValidator(),updateOn: 'blur'
    })

`
form.html

  <form [formGroup]="dateForm" novalidate >
          <div>
            <input type="radio" value="12 Months" formControlName="datefilterChoice"/>
            <label for="date-filter-next-twelve-months">{{"PRO.12_MONTHS" | translate}}</label>
        </div>
        <div>
            <clr-date-container>
                <input id="specific-date" type="date" clrDate (clrDateChange)="onDateSelected()" formControlName="onDate">
                <clr-control-error *clrIfError="'invalidDate'">{{"PRO.INVALID_DATE" | translate}}</clr-control-error>
                <clr-control-error *clrIfError="'pastDate'">{{"PRO.PAST_DATE" | translate}}</clr-control-error>
            </clr-date-container>
        </div>
    </form>

form.ts

constructor(private fb: FormBuilder) {
    super();
    this.dateForm = this.fb.group({
        datefilterChoice: '',onDate: new FormControl('',{
            validators: this.dateValidator(),updateOn: 'blur'
        })
    })
} 

dateValidator(): ValidatorFn {
    return (control: AbstractControl) => {
        if (!!control.value) {
            const str = control.value.trim();
            if ((!!str && !moment(str,'M/D/YYYY',true).isValid())) {
                return {'invalidDate': true};
            }
            if (moment().diff(str) > 0) {
                return {'pastDate': true};
            }
        }
        return null;
    };
}
`

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)