Как использовать Highchart на Angular? - PullRequest
0 голосов
/ 15 февраля 2019

Я хочу сделать диаграмму с Highchart на моем углу, но я застрял, чтобы работать с ним из-за отсутствия информации относительно использования Highchart в Angular на официальном сайте Highchart.

Это библиотека highchart на queue-dashboard.component.ts:

import { Component, OnInit, ViewEncapsulation } from '@angular/core';
import { CountryunitService } from '../../countryunit.service';
import * as Highcharts from 'highcharts';
import { Injectable } from '@angular/core';
import { HttpEvent, HttpInterceptor, HttpHandler, HttpRequest } from '@angular/common/http';
import { map } from 'lodash';

И это содержимое внутри ngOnInit() queue-dashboard.component.ts

ngOnInit() {

  var chart = Highcharts.chart('container', {

    title: {
      text: 'Chart.update'
    },

    subtitle: {
      text: 'Plain'
    },

    xAxis: {
      categories: ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec']
    },

    series: [{
      type: 'column',
      colorByPoint: true,
      data: [29.9, 71.5, 106.4, 129.2, 144.0, 176.0, 135.6, 148.5, 216.4, 194.1, 95.6, 54.4],
      showInLegend: false
    }]

  });

Что мне делать, если нужно сделать вызов графика внутри этого queue-dashboard.component.html?

<div eds-tile class="xl-6" style="height: 350px">
<eds-tile-title>Count of Ticket ID by CU ID</eds-tile-title>
<!-- Highchart On This -->
</div>

1 Ответ

0 голосов
/ 15 февраля 2019

Существует несколько способов визуализации диаграммы с использованием HTML.Попробуем объяснить некоторые из них

1. Мы можем отобразить диаграмму на элементе, указав имя элемента в объекте конфигурации диаграммы.Предположим, что вы хотите отобразить диаграмму на div, который вы упомянули в HTML-файле.

<div eds-tile class="xl-6" style="height: 350px">
<eds-tile-title>Count of Ticket ID by CU ID</eds-tile-title>
<div id="chartContainer"></div>
<!-- Highchart On This -->
</div>

Вы можете настроить объект диаграммы, выполнив рендеринг на элементе

import { Component, OnInit, ViewEncapsulation } from '@angular/core';
import { CountryunitService } from '../../countryunit.service';
import * as Highcharts from 'highcharts';
import { Injectable } from '@angular/core';
import { HttpEvent, HttpInterceptor, HttpHandler, HttpRequest } from '@angular/common/http';
import { map } from 'lodash';

. Класс экспорта YourComponentName реализует OnInit.{

setTimeout( ()=>{
  this.Highcharts.chart({
   chart: {
      type: 'column',
      renderTo:'chartContainer',
  },
  title: {
      text: 'Chart.update'
  },

  subtitle: {
      text: 'Plain'
  },

  xAxis: {
      categories: ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec']
  },

  series: [{
      type: 'column',
      colorByPoint: true,
      data: [29.9, 71.5, 106.4, 129.2, 144.0, 176.0, 135.6, 148.5, 216.4, 194.1, 95.6, 54.4],
      showInLegend: false
  }]

})},3000);

Другой способ - вы можете динамически создавать объект конфигурации диаграммы и связываться внутри контейнера, который вы пытаетесь построить.

this.chartConfig = {
 title: {
  text: 'Chart.update'
  },

 subtitle: {
  text: 'Plain'
  },

 xAxis: {
  categories: ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep',    'Oct', 'Nov', 'Dec']
  },

 series: [{
  type: 'column',
  colorByPoint: true,
  data: [29.9, 71.5, 106.4, 129.2, 144.0, 176.0, 135.6, 148.5, 216.4, 194.1, 95.6, 54.4],
  showInLegend: false
  }]
}

, а в вашем HTMl вы можете динамически связыватьна графике (директива)

 <div eds-tile class="xl-6" style="height: 350px">
<eds-tile-title>Count of Ticket ID by CU ID</eds-tile-title>
<div id="chartContainer">
<chart [options]="chartConfig"></chart>
 </div>
<!-- Highchart On This -->
</div>

Может быть вероятность того, что css старших карт не получит полную высоту и ширину. Для добавления вы можете добавить этот css в свой компонент css / scss.

chart {
 width: 100% !important;
 margin: 0 auto;
 display: block;
}

.highcharts-root {
  width: 100% !important;
  display: block;
  } 

 .highcharts-container {
   width: 100% !important;
  }
...