Как использовать обновленные данные в моем графике приложения Angular после выполнения http-вызова и использования цикла for?

Я использую angular2-highcharts, но я не думаю, что эта проблема специфична для него.

Проблема, с которой я сталкиваюсь, заключается в том, что диаграмма отображается с пустым массивом до того, как она будет обновлена ​​новыми данными. В конечном итоге я хочу использовать событие щелчка, чтобы обновить testArray с помощью вызова API и запустить диалоговое окно, содержащее компонент диаграммы, показывающий эти данные. Итак, мне нужно, чтобы все это происходило как-то синхронно или использовало наблюдаемое для ожидания данных?

Шаблон:

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

Машинопись:

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,
                    }]
  } 
}

Любая помощь будет отличной


person Nicholas    schedule 16.07.2017    source источник


Ответы (1)


Вам следует изучить преобразователи данных маршрутизатора. Я написал о них в вопрос о том, как сделать что-то подобное ионным способом.

Это должно дать вам дорожную карту того, как реализовать их самостоятельно.

(Ionic использует Angular под прикрытием, но не использует маршрутизатор, а скорее навигационный контроллер, который снова был заменен на что-то другое).

Если вам нужна дополнительная информация, я узнал об этом в Университете Angular в их:

В частности, этот материал рассматривается между темами курса:

  • Индикатор предварительной выборки и загрузки данных маршрутизатора Switch Branch и
  • Реализация индикатора загрузки маршрутизатора

Исходный материал также находится на Github. Вы должны знать, какие ветки нужно выбрать из видео, и следовать им, чтобы получить нужный код.

person JGFMK    schedule 16.07.2017
comment
Спасибо за это. Я пройдусь по материалу и опубликую конкретный ответ, как только выясню это - person Nicholas; 16.07.2017
comment
Этот тип решения предотвращает отображение страницы до тех пор, пока не будут возвращены все данные, что, по-видимому, совпадает с вашей проблемой. Вы можете делать такие вещи, как индикатор загрузки страницы на текущей странице и переход после «разрешения» данных. Как шестеренка, анимированная GIF... - person JGFMK; 16.07.2017
comment
Хорошо, отлично, я планирую иметь график в диалоговом окне, так что это должно нормально работать с индикатором загрузки. - person Nicholas; 16.07.2017