Angular localStorage getItem返回null

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

登录后从localStorage检索值时遇到问题。问题就在这里

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
。它给了我们价值