首页 > 解决方案 > localstorage 在我的 Angular 应用程序中不起作用

问题描述

我的 angular11 应用程序有一个登录页面,当我点击连接按钮时,我调用了一个 rest API JAVA。

我得到了数据,但我无法将我的数据存储到我的 google chrome 浏览器和 mozilla 中的 localstorage

login() {
    this.authService.login(this.loginForm.value).subscribe(
      res => this.handleResponse(res)
    )
  }
  
  handleResponse(data:any) {
    localStorage.setItem('token', data.token);
    localStorage.setItem('id', data.id);
    localStorage.setItem('nom', data.nom);
    this.router.navigateByUrl('/livres'); 
  }

我检查我的浏览器是否支持 localstorage

if (window.localStorage) {
        console.log('local storage supported !!!');
      } else {
        console.log('local storage not supported  $$$ ');
      }

我得到支持的控制台本地存储!但任何键和值都是存储到我的网站

这是我的数据{令牌:“eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJzdWIiOiJte…E5OH0.8MxLhs1puaQHlA2UZ-I1lBirWtZxj0FvsJ8_uvB53DI”,名称:“toto”,id:“1”}

任何想法 ?

标签: javascriptjsonangularlocal-storage

解决方案


您只能将字符串设置为 localStorage 或 sessionStorage,因此您可以使用您的数据创建一个对象,然后使用 JSON.stringify(tokenData)。(将对象转换为字符串)。
要从存储中检索,您可以使用:

JSON.parse(localStorage.getItem(tokenData));

尝试这个:

handleResponse(data:any) {
    let tokenData = {
      token: data.token,
      id: data.id,
      nom: data.nom
    };

    localStorage.setItem('tokenData', JSON.stringify(tokenData);
    this.router.navigateByUrl('/livres'); 
}


推荐阅读