Angular 如何等到用户走出输入框,然后以角度运行方法

Angular 如何等到用户走出输入框,然后以角度运行方法,angular,Angular,我正在为输入框调用一个方法,以检查用户输入的电子邮件是否存在,我的问题是,用户输入的每个字符都将运行该方法,我想等待用户退出输入,所以我只运行一次该方法 这是我尝试过的代码-模糊在这里不起作用 这是HTMl: <input formControlName="emailWork" label="Work Email" type

我正在为输入框调用一个方法,以检查用户输入的电子邮件是否存在,我的问题是,用户输入的每个字符都将运行该方法,我想等待用户退出输入,所以我只运行一次该方法

这是我尝试过的代码-模糊在这里不起作用

这是HTMl:

                <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'
    }]
});