首页 > 解决方案 > Angular 在循环中从公司 ID 解析公司名称

问题描述

我是 angular 和 rxjs 的新手,我想company namecompany id数组中解析。

我有这种格式的公司数据:

|---------------------|------------------|
|      CompanyID      |     CompanyName  |
|---------------------|------------------|
|          1234       |    CompanyA      |
|---------------------|------------------|
|          5678       |    CompanyB      |
|---------------------|------------------|

还有我的角码:

  let items = [];
  let companyIDs = [1234, 5678];

  companyIDs.forEach(companyID => {
    this.items.push({
      compId: companyID,
      compName: ??? <------- how to resolve the name from the companyID above?
    })

  });

我有一个返回 RXJS 的服务,observable可以让我解决company name

this.companyService.getCompanyName(1234).subscribe((companyName) => {
      //return CompanyA
})

如何使用companyService解析公司名称?


编辑: 我知道会有很多请求this.companyService.getCompanyName()循环调用,this.companyService.getCompanies()欢迎使用任何其他建议,例如使用。

标签: angulartypescriptforeachrxjs

解决方案


如果您迭代您的 ID 并为每个请求获取一个 companyID,那么这就是很多 http 请求。尽管如此,您可以通过以下方式使您的特定案例生效:

companyIDs.forEach(companyId => {
    this.companyService.getCompanyName(companyId)
        .subscribe(compName => this.items.push({
             compId: companyId, compName: compName 
    })
});

这种方法的问题是你必须在每次迭代时发出一个服务请求,这意味着一个 100 个 Id 的数组将使它成为一个 100 个 http 请求,这并不接近理想......

如果您可以进行 httpCall 来获取表格中的 ID 和公司名称的整个表格,如您的问题中所示...例如this.service.getAllCompanies() // return all the company objects with { id, name },那么您可以进行该调用,然后迭代结果,使其成为简单的http请求。


推荐阅读