网站搜索

typescript - 在我的 Angular 应用中,在进行 HTTP 调用并使用 for 循环后,如何在图表中使用更新的数据?


我正在使用 angular2-highcharts,但我认为这个问题并不特定于它。

我遇到的问题是图表在更新为新数据之前会先用一个空数组渲染。我最终希望通过点击事件更新 testArray,使其通过 API 调用获取数据,并启动一个包含显示该数据的图表组件的对话框。因此,我需要让这一切以某种方式同步发生,或者使用可观察对象来等待数据?

模板:

<chart type="StockChart" [options]="options"></chart>

Typescript :

testArray = []
options: Object;

httpCall():Observable<any>{
  return this._http.get(httpUrl, options)
      .map((res:Response)=> res.json()
)};

updateArray(){
  this.httpCall()
    .subscribe(res =>{
        for (let data of res.data){ 
           this.testArray.push([
                 Date.parse(data['date']), 
                 parseInt(data['value'])
           ])
        }
    })
};
// This is for chart:
makeGraph(){
  this.options = {
            series: [{
                      type: 'column',
                      data: this.testArray,
                    }]
  } 
}

任何帮助都会很棒

答案#1

你应该了解一下路由数据解析器。我在一个关于如何以 Ionic 方式做类似事情的问题中写过关于它们的内容。

这应该能为你自己实现它们提供一个路线图。

(Ionic 在底层使用 Angular,但不使用路由,而是使用导航控制器——它刚刚又被改成了其他东西)。

如果你需要更多细节,我是在 Angular 大学的以下课程中学习这些内容的:

  • Rxjs 与响应式模式 Angular 架构课程

具体来说,这些内容涵盖在以下课程科目之间:

  • 切换分支路由器数据预取和加载指示器,以及
  • 实现路由器加载指示器

源代码也在Github上。你必须知道从视频中检出的分支,并跟着操作才能获得你需要的代码。