Angular-异步反应形式验证器问题

时间:2020-03-30 17:31:23

标签: angular typescript validation asynchronous angular-reactive-forms

我遇到的问题是我想调用一个服务,该服务对API进行http调用,并检查给定的用户名是否存在。

来自验证的代码:

usernameCheck(username: string){ return this.http.get(this.baseUrl + "usernamecheck?username=" + username); }

来自控制器的代码:

async usernameExistsValidator(g: FormGroup){
const username = g.get("username").value;
let username_exists: boolean;
if(username){
  await this.authService.usernameCheck(username).toPromise()
    .then(
      (res : any) => {
        username_exists = res.exists;
      }
    )
  console.log(username_exists)
  return username_exists ? { usernameExistsError: true } : null; 
}

主要问题是我获得了正确的console.log值,但是返回值却无济于事。

1 个答案:

答案 0 :(得分:0)

暂停,直到承诺以 await 结算, 所以改变这个

await this.authService.usernameCheck(username).toPromise()
    .then(
      (res : any) => {
        username_exists = res.exists;
      }
    )
  console.log(username_exists)

通过

   const res = await this.authService.usernameCheck(username).toPromise()

   username_exists = res.exists;

   console.log(username_exists)