我保存在 var 中的 http 响应未定义



我需要获取我的用户信息。我使用此代码来执行此操作:

export class AuthService {
.
.
.
private currentUser: Collaborator;
getCurrentUser() {
return this.currentUser;
}
login(user: Login) {
this.http.post(this.signInUrl, user).subscribe((data: JwtToken) => {
this.setToken(data.tokenType + ' ' + data.accessToken);
this.collabService.getCurrentUser().subscribe((data: Collaborator) => {
this.currentUser = data;
});
});
}
}

但是当我在其他组件中使用带有 getter 的"当前用户"变量时,该值是"未定义的"。

export class HeaderComponent implements OnInit {
.
.
.
public currentUser: Collaborator;
ngOnInit() {
this.currentUser = this.authService.getCurrentUser(); --> is undefined
}
}

如何将值响应保存在 var 中以在任何地方使用它?

根据以下内容更改您的身份验证服务: -

export class AuthService {
public currentUser:any;

getCurrentUser() {
return this.currentUser;
}
setCurrentUser(user) {
this.currentUser=user;
}
login(user: Login) {
this.http.post(this.signInUrl, user).map((res: Response) => {
return res.json();
});
}
getColabUser(){
this.collabService.getCurrentUser().map((res: Response) => {
return res.json();
});
}
}

更改您的 HeaderComponent.ts 文件 :-

export class HeaderComponent implements OnInit {
public currentUser: Collaborator;
ngOnInit() {
this.authService.login(user).subscribe((data)=>{
this.setToken(data.tokenType + ' ' + data.accessToken); // Either use seperate method in the service file to store token details
this.collabService.getCurrentUser().subscribe((user) => {
this.authService.setCurrentUser(data);
this.currentUser = this.authService.getCurrentUser();
});
});
}
}

现在,您可以随时通过getCurrentUser()方法获取存储在AuthService中的当前用户详细信息。

最新更新