加载与Id相关的数据,这些数据存储在本地存储Angular 10中

Posted

技术标签:

【中文标题】加载与Id相关的数据,这些数据存储在本地存储Angular 10中【英文标题】:Load data relevant to Id which store in local storage Angular 10 【发布时间】:2021-10-30 11:32:55 【问题描述】:

我将我的公司 ID 保存在本地存储中。当客户访问分支机构页面时,我需要显示与公司相关的分支机构存储在本地存储中。目前它正在显示所有分支。

我的选择公司下拉菜单在另一个组件中,而我的表格在另一个组件中。

 ngAfterViewInit() 
   this.getBranches();
 

  getBranches() 
      let id: number;
      id = +localStorage.getItem('cid');
      console.log(localStorage.getItem('cid'));
      this.branchService.getBranches().subscribe(x => 
         Object.assign(this.branchData, x);
         this.branchData = this.branchData.filter(b => b.CompanyId = id);
      );
   

【问题讨论】:

【参考方案1】:

问题不在于localStorage,而在于订阅。 this.branchData = this.branchData.filter(b => b.CompanyId = id); 那条线导致了问题。

我建议:

branchData: any; // Or an defined Entity

ngAfterViewInit() 
  this.getBranches();


getBranches() 
 this.branchService.getBranches
  .pipe(filter(data => data.CompanyId === +localStorage.getItem('cid'))
  .subscibe(data => this.branchData = data);

如果你在 DOM 中使用 branchData,我建议使用异步管道并像这样设置

branchData: Observable<any>;

...
getBranches() 
 this.branchData = this.branchService.getBranches
  .pipe(filter(data => data.CompanyId === +localStorage.getItem('cid'));


// inside DOM

<p>(branchData | async)?.CompanyId</p>

尚未测试,但应该可以。

【讨论】:

感谢您的宝贵时间。但它不起作用。我试过了 会发生什么?你确定data.CompanyId 是一个数字吗?使用== 尝试相同的过滤器。否则,记录您获得的所有分支机构并手动检查您正在寻找的公司是否存在。 我试过了,但没有显示数据。我有属于公司的分支机构 如果branchService.getBranches() 只返回一个空的 Observable,你的请求很可能是错误的

以上是关于加载与Id相关的数据,这些数据存储在本地存储Angular 10中的主要内容,如果未能解决你的问题,请参考以下文章

在 iOS 中本地存储 Facebook 用户数据

浏览器复制单独储存数据

Backbone.js 本地存储,从服务器预先加载

本地存储与 AngularJS $cacheFactory

具有远程存储但在本地查询的组合框

hdfs 相关概念