即使在页面以角度5重新加载后如何将值本地存储到变量中

Posted

技术标签:

【中文标题】即使在页面以角度5重新加载后如何将值本地存储到变量中【英文标题】:How to store a value locally to a variable even after the page reloads in angular 5 【发布时间】:2018-10-23 16:54:01 【问题描述】:

我在我的 Angular 5 应用程序中使用了WebStorageServie 来存储一个被选择一次并且可供整个应用程序访问的值。它工作得很好,但是当页面重新加载时,存储在变量中的数据也会被刷新。以下代码显示了我是如何实现 `WebStorageService' 的:

constructor(
    private _http: HttpClient,
    @Inject(LOCAL_STORAGE) private storage: WebStorageService
  ) 
    this.setHeaders();
  

  setHeaders() 
    this.headers =  new HttpHeaders().set('Content-Type', 'application/json');
  
  /*JIF*/

  setJIF(key1, jifId, key2,  PoID)  // Setting Global Var
            this.storage.set(key1, jifId);
      this.jifId = this.storage.get(key1);
      this.setPO(key2 , PoID);

  

  setPO(key2, PoID) 
    this.storage.set(key2, PoID);
    this.poId = this.storage.get(key2);
     console.log('POID', this.poId); // Gives Desired Output
    console.log('JIFID', this.jifId);//Gives Desired Output
  

我希望this.jifIdthis.poId 保留其价值,直到用户另有决定。而我现在这样做的方式是在页面重新加载时被清空。

【问题讨论】:

有什么理由不使用 cookie 或 localStorage? 没有理由我对角度有点陌生,所以我可能只是不知道方法。该过程不应使用 cookie 完成,但我不知道如何使用 localStorage @AtulStha,我可能弄错了,但我无法从您的代码 sn-p 中看出您要做什么。我不知道何时调用 setJif。但是,当应用程序重新加载时,您似乎没有“获取”值,因此您将无权访问这些值。尝试在构造函数中执行 getitem() 【参考方案1】:

使用本地存储

首先设置项目的东西(如果你想设置loggedInfo)

let loggedInfo = 'poId':3,'poId':11
localStorage.setItem('loggedInfo',JSON.stringify(loggedInfo));
//Convert Object to String

现在通过 getItem 获取您的对象

let loggedData = JSON.parse(localStorage.getItem('loggedInfo'));
//Convert String to Object and Local Storage data

现在使用您的本地存储数据以供进一步使用……:)

【讨论】:

以上是关于即使在页面以角度5重新加载后如何将值本地存储到变量中的主要内容,如果未能解决你的问题,请参考以下文章

VueJS - 重新加载页面后无法将值从 mapState 分配给数据属性

将值从第一个下拉列表提交到第二个下拉列表而不重新加载页面

本地存储由 .php 脚本递增的 javascript 变量

以角度刷新下拉列表而不重新加载页面

如何在不重新加载页面的情况下以角度 2 设置或删除当前路线中的 queryParams

即使在我重新加载页面后,如何防止已经在 J​​avascript 中启动的“onclick”功能?