我在 Angular 中有一个用户界面,
export interface User {
id: number;
firstName: string;
lastName: string;
}
我有一个用户服务,
import { Injectable } from '@angular/core';
import { HttpClient, HttpHeaders } from '@angular/common/http';
import { User } from './model/user';
export class UserService {
static instance: UserService;
user: User;
constructor(private httpClient: HttpClient) {
if(!UserService.instance) {
UserService.instance = this;
}
return UserService.instance;
}
getUserData() {
return this.httpClient.get(URL);
}
setUserData(data) {
this.user = data;
}
getUser() {
return this.user;
}
}
我将服务维护为单例,因为我希望对登录的用户数据具有单一访问权限并在应用程序的不同区域之间共享状态。
在 user.component.ts
export class UserComponent implements OnInit {
constructor(private userService: UserService) { }
ngOnInit() {
this.userService.getUserData(url).subscribe((response: any) => {
this.userService.setUserData(response);
});
}
getUser() {
console.log(this.userService.getUser()) //prints undefined.
}
}
调试时,UserService 中的用户未定义。我错过了一些东西,我无法弄清楚。你们能帮忙吗。