问题描述
为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 (将#修改为@)