如何解决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 举报,一经查实,本站将立刻删除。