【问题标题】:How can I merge multiple HTTP calls to one entity model in Angular如何在 Angular 中将多个 HTTP 调用合并到一个实体模型
【发布时间】:2026-02-19 14:35:01
【问题描述】:

我有这种情况:

这个接口代表坐标轴值。

export interface ChartModel {
    HorizontalElement: number,
    VerticalElement: number
}

我可以在一个图中有多个图表,所以我使用这个模型。

import { ChartModel } from "./ChartModel";

export interface ResponseModel {
    PrimaryChart: ChartModel[];
    PreviousQuarterChart1: ChartModel[];
    PreviousQuarterChart2: ChartModel[];
    PreviousQuarterChart3: ChartModel[];
}

现在我有两个返回数据的 API 服务。其中一个我必须打 3 次电话。如何将所有调用合并到一个服务方法中,并且该方法只返回一个 ResponseModel 类型的结果。

对于每个服务调用,我有 3 个这样的元素,这就是我所说的 ChartModel:

[
    {
        "HorizontalElement": 0,
        "VerticalElement": 150
    },
    {
        "HorizontalElement": 1,
        "VerticalElement": 236
    },
    {
        "HorizontalElement": 2,
        "VerticalElement": 330
    }
]

我想要做的是将 3 个响应连接到一个名为 ResponseModel 的对象中。 像这样的:

[
[{"HorizontalElement":0,"VerticalElement":150},{"HorizontalElement":1,"VerticalElement":236},{"HorizontalElement":2,"VerticalElement":330}],
[{"HorizontalElement":0,"VerticalElement":150},{"HorizontalElement":1,"VerticalElement":236},{"HorizontalElement":2,"VerticalElement":330}],
[{"HorizontalElement":0,"VerticalElement":150},{"HorizontalElement":1,"VerticalElement":236},{"HorizontalElement":2,"VerticalElement":330}]
]

【问题讨论】:

  • 所以,你有一个包含 3 个 ChartModel 数组的数组。您只需要return { PrimaryChart: array[0], PreviousQuarterChart1: array[1], ... }。当然,我们无法真正弄清楚如何从一个只有 3 个数组中取出 4 个数组。

标签: angular charts chart.js


【解决方案1】:

我认为您正在寻找 Observable.forkJoin 方法 (https://www.learnrxjs.io/operators/combination/forkjoin.html) 当您有一组可观察对象并且只关心每个对象的最终发出值时,最好使用此运算符。

如果您需要示例,请告诉我。

【讨论】:

  • 是的,我用过,但我不知道如何只检索一个ResponseModel类型的结果,每个服务api返回ChartModel,与fork合并时,它返回ChartModel[](数组)。
  • @Juanma 编辑您的问题,并发布您的代码、您期望它做什么以及它会做什么。你应该从一开始就这样做。
  • 您说您必须创建 3 个请求。并且每个请求都返回 ChartModel。但是请您解释一下,ResponseModel 的每个字段的数据都相似吗?
  • 我已经编辑了我的问题,我需要将服务中的所有响应合并到一个对象并将其返回到视图中
  • 很高兴听到您找到了解决方案!
最近更新 更多