Неопределенный ответ при размещении console.log и подписке на API-сервис - PullRequest
0 голосов
/ 03 апреля 2020

Я новичок в Angular. Я пытаюсь реализовать функциональность входа в систему в Angular 8. И здесь я использую внутренний вызов REST API для получения ответа. Но когда я звоню и проверяю имя пользователя и пароль, я получаю только неопределенный ответ на консоли. И я проверил, что бэкэнд API успешно работает.

Мой машинописный код в компоненте logincontrol выглядит следующим образом:

onSubmit(user:any) 
  {
    console.log(this.user.username);

    this.logincontrolService.postCheckSurveyApplicationLoginApiMethod(this.user)
      .subscribe((data:any)=> this.userInstituteObj);

    console.log(this.userInstituteObj.instituteIdentifier);

    if(this.userInstituteObj.instituteIdentifier != null)
          {
            this.router.navigate(['home/homepage']);
          }
        else
          {
            alert('Please Enter Valid Username/Password..!!');
          }
  }

А моя функция метода post внутри службы похожа на следующую:

postCheckSurveyApplicationLoginApiMethod(user:any) 
{
    return this.http
      .post( this.baseurlService.getUrl()
            +this.portNumberService.getloginControlPortNumber()
            +this.instituteidentifierService.getInstitute()
            +'/security/checkSurevyApplicationLogin',
            this.user,
            {
              headers: this.applicationconfigService.getHeader()
            }
      );
}

При подписке на службу почему я получаю неопределенный ответ здесь

1 Ответ

3 голосов
/ 03 апреля 2020

TL, DR

сделать изменения ниже:

onSubmit(user:any) 
  {
    console.log(this.user.username);

    this.logincontrolService.postCheckSurveyApplicationLoginApiMethod(this.user)
      .subscribe((data:any)=>{

           this.userInstituteObj = data;
           console.log(this.userInstituteObj.instituteIdentifier);

          if(this.userInstituteObj.instituteIdentifier != null)
          {
            this.router.navigate(['home/homepage']);
          }
        else
          {
            alert('Please Enter Valid Username/Password..!!');
          }

    } );


  }

, почему мой код не работает?

JS в асинхронном режиме, он не ожидает выполнения какого-либо запроса. Поскольку вы делаете сервисный вызов, JS не будет ждать его завершения и продолжит выполнение следующей строки кода. Поскольку следующая строка выполняется до того, как служба вернет данные, в это время userInstituteObj равно undefined.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...