我想与服务器进行验证,以检查电子邮件是否已经注册,但仅限于模糊而非价值变化
我可以选择添加多个控件,这就是我组织表单的方式
ngOninit(){
this.userForm = this._formBuilder.group({
others: this._formBuilder.array([]) //multiple
});
this.onAddControl(); //allows adding multiple items
}
onAddControl(){
return this._formBuilder.group({
email: ['' [this._validateServ.emailDoesntExistsValidator.bind(this._validateServ)]
],
});
}
}
现在在_validateServ
emailDoesntExistsValidator(control) {
if (control.value != undefined) {
if(!this.emailValueValidator(control)){
return this._authService.checkExists("email",control.value) //http request
.map(response => {
if (response) {
return {'emailTaken': true};
}
});
}
}
}
我希望电子邮件验证能够在模糊下运行,因为它正在执行http请求,以便我可以显示正在执行http请求的等待 以上工作但适用于每个按键,但不适用于模糊事件
答案 0 :(得分:0)
我不知道您可以延迟控制验证。
但是你可以推迟两件事:
debounceTime()
运算符允许您在用户完成输入后等待n毫秒以执行请求。见this example。<input (blur)="displayError=true">
。然后使用该标志显示错误:<div *ngIf="error && displayError">Error message</div>
。