【问题标题】:Load data relevant to Id which store in local storage Angular 10加载与Id相关的数据,这些数据存储在本地存储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);
      });
  } 

【问题讨论】:

    标签: angular typescript local-storage


    【解决方案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,你的请求很可能是错误的
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-02-20
    • 2011-02-26
    • 1970-01-01
    相关资源
    最近更新 更多