有一个授权表格:
<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
仅在第二次单击之前更改。我该如何解决?
答案 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']);
}
});
}