POST请求后获取变量的值

时间:2018-09-11 08:26:32

标签: angular typescript

有一个授权表格:

<form (submit)="login($event)">
    <input class="form-control" name="PromoCode" placeholder="enter promo">
    <input type="submit" class="btn btn-block btn-outline-primary" value="login">
</form>

有一种方法login

isExist : boolean = false;

...

login(e){
    var promo = e.target.elements[0].value;

    this.http.get('http://localhost:49296/api/Buyers/GetBuyer?promo=' + promo).subscribe((exist : boolean) => this.isExist = exist);

    console.log(this.isExist);
    if(this.isExist == true){
      this.router.navigate(['books']);
    }
  }

localhost是我的Web API项目。我检查Fiddler中的请求,Web API给我正确的值。但是,当我单击登录名时,isExist仅在第二次单击之前更改。我该如何解决?

1 个答案:

答案 0 :(得分:1)

将导航逻辑移动到subscription方法。 http.get返回一个可观察值。这意味着它是异步。因此,您必须将所有方法都移至subcribe方法。

login(e){
  var promo = e.target.elements[0].value;

  this.http.get('http://localhost:49296/api/Buyers/GetBuyer?promo=' + promo).subscribe((exist : boolean) => {

  this.isExist = exist
  console.log(this.isExist);
  if(this.isExist == true){
      this.router.navigate(['books']);
  }
  });
}