订阅Observable:
checkAllowEmail(control: FormControl) {
this.userService.getUserByEmail(control.value)
.subscribe((user: UserDto) => {
console.log(user);
if (user !== undefined) {
console.log(this.isAllowEmail);
this.isAllowEmail = false;
console.log(this.isAllowEmail);
}
});
}
从方法返回Observable:
getUserByEmail(email: string): Observable<UserDto> {
return this.http.get(`http://localhost:9092/api/v1/users?email=${email}`)
.map((response: Response) => response.json())
.map((user: UserDto) => user ? user : undefined);
}
Class UserDto:
export class UserDto {
constructor(
public email: string,
public name: string,
public role: string
) {}
}
来自BE方面的回应:
{"name":"art","email":"art@mail.ru","role":"user"}
为什么我可以在checkAllowEmail方法的if语句中将变量isAllowEmail更改为false?
答案 0 :(得分:0)
在使用HttpClient时,我不认为你仍然需要使用map函数(因为角度版本4)。尝试使用
getUserByEmail(email: string): Observable<UserDto> {
return this.http.get<UserDto>(`http://localhost:9092/api/v1/users?email=${email}`);
}
否则请使用Postman甚至curl等控制台来验证你api是否返回正确/预期的响应。
同时检查您是否使用'use strict';在这种情况下,this
将引用您传递给subscribe方法而不是周围组件类的可调用对象。