Angular 如何等到用户走出输入框,然后以角度运行方法
我正在为输入框调用一个方法,以检查用户输入的电子邮件是否存在,我的问题是,用户输入的每个字符都将运行该方法,我想等待用户退出输入,所以我只运行一次该方法 这是我尝试过的代码-模糊在这里不起作用 这是HTMl:Angular 如何等到用户走出输入框,然后以角度运行方法,angular,Angular,我正在为输入框调用一个方法,以检查用户输入的电子邮件是否存在,我的问题是,用户输入的每个字符都将运行该方法,我想等待用户退出输入,所以我只运行一次该方法 这是我尝试过的代码-模糊在这里不起作用 这是HTMl: <input formControlName="emailWork" label="Work Email" type
<input
formControlName="emailWork"
label="Work Email"
type="text"
(blur)="onInputblur()"
[error]="hasError('emailWork', 'required') || hasError('emailWork', 'email')"
errorMessage="Please enter a valid email address." />
<span class="error-label"
*ngIf="addUserForm.get('emailWork').hasError('usernameTaken')">Email already exists
</span>
这是关于模糊的:
public isBlured: boolean = false; (at the top)
public onInputblur(): void {
this.isBlured = true;
setTimeout(() => {
this.emailValidator();
}, 250);
}
这是检查电子邮件是否存在的方法:
private emailValidator(): AsyncValidatorFn {
return (control: AbstractControl): Observable<any> => {
return this.service.doesUserNameExist(control.value).pipe(
debounceTime(500),
map(exists => (!exists ? null : { usernameTaken: true }))
);
};
}
专用emailValidator():AsyncValidator fn{
返回(控件:AbstractControl):可观察=>{
返回this.service.doesUserNameExist(control.value).pipe(
去BounceTime(500),
映射(exists=>(!exists?null:{usernametake:true}))
);
};
}
您可以为该字段设置updateOn
选项
this.addUserForm = this.fb.group({
firstName: ['', [Validators.required]],
lastName: ['', [Validators.required]],
emailWork: ['', {
validators: [Validators.email, Validators.required],
asyncValidators: [this.emailValidator()],
updateOn: 'blur'
}]
});
您可以为该字段设置
updateOn
选项
this.addUserForm = this.fb.group({
firstName: ['', [Validators.required]],
lastName: ['', [Validators.required]],
emailWork: ['', {
validators: [Validators.email, Validators.required],
asyncValidators: [this.emailValidator()],
updateOn: 'blur'
}]
});