【发布时间】:2019-05-23 01:01:43
【问题描述】:
有一个组件(登录)调用向我的控制器抛出了服务。 如果登录失败,控制器将返回 false,如果登录成功,则返回用户的电子邮件。 当我单击执行函数 OnSubmit() 的按钮时,我的前面调用了该服务。 在这种方法中,如果登录成功,我想在页面上重定向用户,或者写一条消息是否有问题。
我的问题是我的服务设法登录,但是由于服务的http请求是异步的,所以我的前端不等待响应并且this.Email的值是“未定义”。
我应该怎么做才能等待 http 响应(在我的组件或我的服务中)?
这是我的函数 OnSubmit() :
onSubmit() {
var user = {
'Email': this.userForm.Email,
'Password': this.userForm.Password,
}
this.authService.login(user).subscribe(result => {
this.Email = result.value;
console.log("connected with :" + this.Email);
});
if (this.Email == false) {
this.Message = "wrong login or password."
}
else {
this.router.navigateByUrl("dashboard");
}
}
我的服务:
login(user: any): Observable<any> {
return this.http.post<any>(this.baseUrl + '/login', user, httpOptions);
}
还有我的控制器:
[HttpPost("/login")]
public async Task<IActionResult> Login([FromBody] LoginVM loginVM)
{
if (ModelState.IsValid)
{
var result = await _signInManager.PasswordSignInAsync(
loginVM.Email,
loginVM.Password,
loginVM.RememberMe,
false
);
if (result.Succeeded)
{
return Ok(Json(loginVM.Email));
}
else
{
return Ok(Json(false));
}
}
return Ok(Json(false));
}
非常感谢您的回答:)
【问题讨论】:
标签: angular