我有HTML文件,该文件是我从表单标签调用提交功能的地方
<form [formGroup]="loginform" (ngSubmit)="loginUser(loginform)">
是的,我有一个完整的表格,其中包含所有必填字段和提交按钮。
接下来,在我的角度文件中,我的功能是
loginUser(form: FormGroup){
let pass: DbModel = {
reg_username: '',
reg_email: '',
reg_fullname: '',
reg_dob: '',
reg_gender: '',
reg_password: ''
};
this.storageService.login(form).subscribe(data => pass = data);
if(form.value.reg_password === pass.reg_password)
console.log("Logged In...");
else
console.log("Wrong Credentials..."); }
然后,我的服务文件是
login(form: FormGroup): Observable<DbModel>{
return this.http.get<DbModel>('http://localhost:53685/api/users/'+form.value.reg_username);
}
现在,此API调用返回正确的值,但不是在正确的时间。
调试后,我得到的期望返回值pass.reg_password
保持未定义,但是一旦我在调试器中单击“继续”按钮,事件就会完成并且pass.reg_password
具有正确的期望值。
如何在角度6中解析,我正在使用HttpClientModule
,Net WebAPI,SQL数据库,并且还调试了Web API,它返回了正确的值。
当我在chrome开发人员工具中选中“网络”标签时,它在调试时显示为待处理状态,但在事件结束时显示为200。
答案 0 :(得分:3)
您的确认已在您的订阅得到解决之前执行,您应该在subscribe
回调中进行表单值检查。
this.storageService.login(form).subscribe(data => {
if(form.value.reg_password === data.reg_password)
console.log("Logged In...");
else
console.log("Wrong Credentials...");
});
要抓住的是这一行:
return this.http.get<DbModel>'http://localhost:53685/api/users/'+form.value.reg_username);
http.get(...)
是异步的,因此您需要在内部 subscribe()回调中处理响应。