当前位置: 首页 > 知识库问答 >
问题:

从Angular 2中的图表API获取数据

宋朝
2023-03-14

我试图用图表构建一个图表,数据来自我的Node.jsAPI。在图表文档中有一个异步数据的例子,如下所示:

class AsyncChartComponent {
  data: Promise<Chartist.IChartistData>;
  type: Promise<ChartType>;

  constructor() {
    // simulate slow API call
    this.data = new Promise(function(resolve: any): void {
      setTimeout(function(): void {
        resolve(data['Pie']);
      }, 5000);
    });

    this.type = new Promise(function(resolve: any): void {
      setTimeout(function(): void {
        resolve('Pie');
      }, 5000);
    });
  }
}

但是我使用Observable从API获取数据,我无法处理PromiseObservable。。。我试图用调用API的数据解析我的promise,但除了可观察的之外,没有返回任何内容。我不确定该如何处理这个问题:这是我的角度2分量:

export class RatesComponent implements OnInit {
  @Output() changed = new EventEmitter<IRate>();

  rates: IRate[] = [];
  selectedRate: IRate;
  errorMessage: string;
  chart: Chart;
  chartData: Promise<Chartist.IChartistData>;
  type = 'Line';

  constructor(private dataService: DataService) { }

  ngOnInit() {
    this.dataService.getRates()
        .subscribe(
          (data: IRate[]) => {
            this.rates = data;
          },
          (error) => this.errorMessage = <any>error
        );

    this.chartData = new Promise((resolve: any): void => {
      resolve(this.dataService.getChartData());
    });

    this.dataService.getChartData()
        .subscribe(
          (data: Chartist.IChartistData) => {
            return data;
            // console.log(this.chartData);
          },
          (error) => this.errorMessage = <any>error
        );

    this.chart = {
      type: 'Line',
      data: JSONdata['Line2']
    };
  }

  select(rate: IRate) {
    this.selectedRate = rate;
    this.changed.emit(rate);
  }
}

也许我应该使用Promise调用我的API,而不是可观察的,但是我不知道它将如何解决我的问题...

任何帮助:)


共有1个答案

陆伟
2023-03-14

试试这个:

this.chartData = new Promise((resolve: any): void => {
   this.dataService.getChartData().subscribe((data: Chartist.IChartistData) => {
     resolve(data);
   },
     (error) => this.errorMessage = <any>error;
   );
});

您也可以尝试以下方法:

this.chartData = this.dataService.getChartData().toPromise();
 类似资料:
  • 问题内容: Q1) 在我的reactjs应用程序中,我正在尝试从后端Nodejs服务器获取API。API会根据请求响应图像文件。 我可以在http://192.168.22.124:3000/source/592018124023PM-pexels- photo.jpg 上访问并查看图像文件 但是在我的reactjs客户端上,我在控制台日志上收到此错误。 未捕获(承诺)SyntaxError:意外

  • 我正在尝试使用 考虑以下代码 每当我试图打印出的结果时,它总是返回 即使我返回一个json对象。 如何打印的结果?

  • 我一直在尝试使用nativescript创建一个android应用程序。我正在使用fetch模块从服务器获取响应。当我试图从httpbin获得响应时。org/get,没关系。但当我试图从本地服务器获取响应时,网络请求失败。错误 发送到httpbin。组织/获取- 发送到本地主机:8000/api- 当我尝试从纯节点中的localhost:8000/api获取响应时。js通过请求模块。它工作得很好。

  • 问题内容: 我是React和GatsbyJS的新手。我很困惑,无法以一种简单的方式弄清楚如何从第三方Restful API加载数据。 例如,我想从randomuser.me/API获取数据,然后能够使用页面中的数据。 我们这样说: 但是我想得到GraphQL的帮助,以便对用户进行过滤和排序等。 您能否帮助我找到如何获取数据并将其插入GraphQL的示例? 问题答案: 如果您想使用GraphQL来获

  • 问题内容: 我有三个表,其中两个是主表,另一个是map。它们在下面给出。 tbl_Category,具有列ID(PK)和名称 / * / tbl_SubCategory Id SubCategoryName CategoryId (FK, PK of above) 2 Badges, Emblems, Ribbons & Allied 2 3 Barcodes, Stickers & Labels

  • 表 1:发票(inv_id、inv_value、cust_id) 表 2:客户(cust_id、sales_rep) 表 3:成员(Member_id、member_cateogry、member_type、cust_id) 注1:每个客户支付多张发票。(一对多关系)。< br >注2:每个客户为一个或多个会员付费(因此一个客户可能与多个会员相关)。< br >注3:每个成员都有一个类别,可以是1