Angular Observable 在调用时不设置局部变量 API
Angular Observable don't set local variable while calling API
我正在尝试像这样在局部变量中设置值:
export class memberComponent implements OnInit {
member : Member = new Member();
constructor(private memberService: MemberService) {}
ngOnInit() {
this.loadMember();
console.log("member 1: ", this.member); // in here member is empty
}
loadMember(){
this.memberService.getMember("john").subscribe(mem => {
this.member = mem;
console.log("member 2: ", this.member);// in here member is NOT empty
});
}
}
并且因为 member
是空的,页面中没有显示任何内容。这是我的 component.html
<h1>{{member.userName}}</h1>
最后,这是会员服务:
export class MemberService {
baseUrl = environment.apiUrl;
constructor(private http: HttpClient) {}
getMember(userName: string) {
return this.http.get<Member>(this.baseUrl + 'users/' + userName);
}
}
我尝试使用 pipe(take(1))
方法和 interface
而不是 class
但没有区别。我的 html 页面上没有显示任何内容。
有什么问题,我该如何解决?
您应该在浏览器控制台中收到无法读取用户名的未定义错误。要解决此问题,请尝试使用如下所示的 elvis 运算符:-
<h1>{{member?.userName}}</h1>
我正在尝试像这样在局部变量中设置值:
export class memberComponent implements OnInit {
member : Member = new Member();
constructor(private memberService: MemberService) {}
ngOnInit() {
this.loadMember();
console.log("member 1: ", this.member); // in here member is empty
}
loadMember(){
this.memberService.getMember("john").subscribe(mem => {
this.member = mem;
console.log("member 2: ", this.member);// in here member is NOT empty
});
}
}
并且因为 member
是空的,页面中没有显示任何内容。这是我的 component.html
<h1>{{member.userName}}</h1>
最后,这是会员服务:
export class MemberService {
baseUrl = environment.apiUrl;
constructor(private http: HttpClient) {}
getMember(userName: string) {
return this.http.get<Member>(this.baseUrl + 'users/' + userName);
}
}
我尝试使用 pipe(take(1))
方法和 interface
而不是 class
但没有区别。我的 html 页面上没有显示任何内容。
有什么问题,我该如何解决?
您应该在浏览器控制台中收到无法读取用户名的未定义错误。要解决此问题,请尝试使用如下所示的 elvis 运算符:-
<h1>{{member?.userName}}</h1>