Angular 2继承错误

时间:2018-02-23 07:49:43

标签: angular inheritance

目前我正在开发一个项目,我有两个服务,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();

然后没有这样的问题,并且它工作得很好,我在进入页面后立即获得更新信息,无需刷新页面。我想知道为什么会这样?

0 个答案:

没有答案