目前我正在开发一个项目,我有两个服务,UserService和SharedService。
我在UserService中有一个getter setter,
export class UserService {
private _user: Data;
getUser(): Data {
if (!this._user) {
this._user = JSON.parse(sessionStorage.getItem(APPStorage.USER));
this.setUser(this._user);
}
return this._user;
}
setUser(value: Data): void {
sessionStorage.setItem(APPStorage.USER, JSON.stringify(value));
this._user = value;
}
......
}
和
export class SharedService extends UserService {
....
}
所以在更新我的用户之后,作为响应,我调用setUser方法并在_user中保存更新的详细信息。组件看起来像这样,
export class ProfileComponent implements OnInit {
constructor(private sharedService: SharedService,
private userService: UserService) {
}
ngOnInit() {
this.userDetail = this.userService.getUser();
....
}
....
}
在更新用户配置文件后,如果我从系统注销而不是重新登录并检查我的个人资料,这个特殊情况会出现问题,它会在更新详细信息之前显示给我。即使从后端我得到正确的更新响应,如果我刷新页面比我得到正确的信息(意味着_user显示更新的细节)。如果我在ngOnInit my component中改变了这样的东西,
this.userDetail = this.sharedService.getUser();
然后没有这样的问题,并且它工作得很好,我在进入页面后立即获得更新信息,无需刷新页面。我想知道为什么会这样?