Angular - проблема с asyn c средством проверки реактивной формы - PullRequest
0 голосов
/ 30 марта 2020

У меня проблема в том, что я хочу позвонить в службу, которая выполняет http-вызов API и проверяет, существует ли данное имя пользователя.

Код от Auth:

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 голосов
/ 30 марта 2020

Пауза до разрешения обещания с 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)
...