Angular localStorage getItem返回null
登录后从localStorage检索值时遇到问题。问题就在这里Angular localStorage getItem返回null,angular,typescript,Angular,Typescript,登录后从localStorage检索值时遇到问题。问题就在这里 getOrgId(){ console.log(localStorage.getItem('orgId'))//Give null 返回localStorage.getItem('orgId') } 它给出的值为null,但当我重新加载页面时,我得到了值 认证服务 public loginUser(userData: LoginRequest): Observable<LoginResponse> { console
getOrgId(){
console.log(localStorage.getItem('orgId'))//Give null
返回localStorage.getItem('orgId')
}
它给出的值为null,但当我重新加载页面时,我得到了值
认证服务
public loginUser(userData: LoginRequest): Observable<LoginResponse> {
console.log(userData.password)
return this.http.post<LoginResponse>("api/auth/login", userData,httpOptions)
.pipe(
tap( // Log the result or error
data => {
if (data.status['message'] === 'Success.') {
const loginData = {role: data.role, user: data.user, token: data.token,orgId:data.orgId,email:data.email,orgName:data.orgName};
localStorage.setItem('loginData', JSON.stringify(loginData));
localStorage.setItem('loginUserId', userData.userId);
localStorage.setItem('token', JSON.stringify(loginData.token));
localStorage.setItem('orgId', JSON.stringify(loginData.orgId));
localStorage.setItem('email', JSON.stringify(loginData.email));
localStorage.setItem('orgName',JSON.stringify(loginData.orgName));
localStorage.setItem('role', JSON.stringify(loginData.role));
console.log("logindata:" +loginData.orgId); //Give Value
console.log(this.isLoggedIn());
this.login.next(this.isLoggedIn());
this.router.navigateByUrl('/dashboard');
} else {
localStorage.removeItem('loginData');
localStorage.removeItem('loginUserId');
localStorage.removeItem('token');
localStorage.removeItem('orgId');
localStorage.removeItem('orgName');
this.login.next(this.isLoggedIn());
}
},
error => {
localStorage.removeItem('loginData');
localStorage.removeItem('loginUserId');
localStorage.removeItem('token');
localStorage.removeItem('orgId');
localStorage.removeItem('orgName');
this.login.next(this.isLoggedIn());
console.log(error);
}
)
);
}
getOrgId(){
console.log(localStorage.getItem('orgId')) //Give null
return localStorage.getItem('orgId')
}
BaruChanged(e){
console.log(e)
const jabatan = localStorage.getItem('jabatan_id');
const entitas_id = localStorage.getItem('entitas_id');
const username = localStorage.getItem('username').toString().toUpperCase();
this.role.username=username;
this.role.entitas_id = entitas_id;
this.role.jabatan = jabatan;
}
公共登录用户(userData:LoginRequest):可观察{
console.log(userData.password)
返回this.http.post(“api/auth/login”、userData、httpOptions)
.烟斗(
轻触(//记录结果或错误
数据=>{
如果(数据状态['message']='Success'){
const loginda={role:data.role,user:data.user,token:data.token,orgId:data.orgId,email:data.email,orgName:data.orgName};
setItem('loginda',JSON.stringify(loginda));
setItem('loginUserId',userData.userId);
setItem('token',JSON.stringify(loginda.token));
setItem('orgId',JSON.stringify(loginda.orgId));
localStorage.setItem('email',JSON.stringify(loginda.email));
setItem('orgName',JSON.stringify(loginda.orgName));
setItem('role',JSON.stringify(loginda.role));
console.log(“loginda:+loginda.orgId);//给出值
console.log(this.isLoggedIn());
this.login.next(this.isLoggedIn());
this.router.navigateByUrl('/dashboard');
}否则{
localStorage.removietem('loginda');
localStorage.removietem('loginUserId');
localStorage.removietem('token');
localStorage.removietem('orgId');
localStorage.removietem('orgName');
this.login.next(this.isLoggedIn());
}
},
错误=>{
localStorage.removietem('loginda');
localStorage.removietem('loginUserId');
localStorage.removietem('token');
localStorage.removietem('orgId');
localStorage.removietem('orgName');
this.login.next(this.isLoggedIn());
console.log(错误);
}
)
);
}
getOrgId(){
console.log(localStorage.getItem('orgId'))//Give null
返回localStorage.getItem('orgId')
}
我不知道这个答案对你是否有帮助,因为我在这几个月里也在努力 我发现您需要使用函数从本地存储中收集一个值。也许我的代码可以帮助你:/ ||顺便说一句,我正在使用java进行Web服务|| Authentication.service.ts
login(username: string, password: string) {
return this.http.post < any > (this.a.SERVER_URL + '/system/auth/newLogin', { // /authentication/login
// return this.http.post < any > (this.a.SERVER_URL + '/authentication/login', {
username: username,
password: password
})
.map(user => {
// login successful if there's a jwt token in the response
console.log(user);
if (user && user.d) {
// if (user && user.token) {
// store user details and jwt token in local storage to keep user logged in between page refreshes
localStorage.setItem('username', username);
localStorage.setItem('entitas_id', user.d.entitas_id);
localStorage.setItem('role_id', user.d.role_id);
localStorage.setItem('token', user.d.token);
localStorage.setItem('active', user.d.active);
localStorage.setItem('jabatan_id', user.d.jabatan_id);
localStorage.setItem('currentUser', JSON.stringify(user));
} else {
// Gagal Login
this.options.message = user.m;
notify(this.options, 'error', 3000);
}
return user;
});
我正在将localStorage.getItem('jabatan_id')保存到某个常量中。这就是我想向您展示的:)我想您可能会在ngOninit()或组件构造函数中调用getOrgId()函数,这就是为什么它会给出null,因为在本地sotrage中设置值之前,您正在调用getOrgId()函数
只需在函数getOrgId()和loginUser()中编写一个控制台,检查哪一个先打印。谢谢您的回答。。但这并不能解决我的问题,当您试图获取orgId时,它在localStorage中可用。它是否正确地设置在那里。你是不是想在它被设定之前得到它。请检查一下。。有空。。我添加了
console.log(“loginda:+loginda.orgId”)代码>贝娄localStorage.setItem
。它给了我们价值