首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >错误TypeError:无法读取角-高度图中未定义的属性'0‘

错误TypeError:无法读取角-高度图中未定义的属性'0‘
EN

Stack Overflow用户
提问于 2018-05-23 14:11:43
回答 1查看 1.1K关注 0票数 3

我使用angular5angular-highcharts库来绘制来自highcharts演示的简单地图:https://www.highcharts.com/maps/demo/category-map,如下所示:

app.component.ts:

代码语言:javascript
复制
import {Component, OnInit, Injectable} from '@angular/core';
import {Chart, MapChart} from 'angular-highcharts';

const Highcharts = {maps: {}};
require('../assets/maps')(Highcharts);

@Component({
  selector: 'app-root',
  templateUrl: './app.component.html',
  styleUrls: ['./app.component.css']
})
export class AppComponent implements OnInit {
  title = 'Spatial Accessibility';
  mapSpatial: MapChart;

  constructor(private http: HttpClient) {
  }

  ngOnInit() {
    this.mapSpatial = this.getEuropeMap();   
  }

  getEuropeMap() {    
    // Instantiate the map
    return new MapChart({
      chart: {
        map: Highcharts['maps']['custom/europe'],
        spacingBottom: 20
      },
      title: {
        text: 'Europe time zones'
      },
      legend: {
        enabled: true
      },
      plotOptions: {
        map: {
          allAreas: false,
          joinBy: ['iso-a2', 'code'],
          dataLabels: {
            enabled: true,
            color: '#FFFFFF',
            style: {
              fontWeight: 'bold'
            },
            // Only show dataLabels for areas with high label rank
            format: null,
            formatter: function () {
              if (this.point.properties && this.point.properties.labelrank.toString() < 5) {
                return this.point.properties['iso-a2'];
              }
            }
          },
          tooltip: {
            headerFormat: '',
            pointFormat: '{point.name}: <b>{series.name}</b>'
          }
        }
      },
      series: [{
        name: 'UTC',
        data: ['IE', 'IS', 'GB', 'PT'].map(code => {
          return {code: code};
        })
      }, {
        name: 'UTC + 1',
        data: ['NO', 'SE', 'DK', 'DE', 'NL', 'BE', 'LU', 'ES', 'FR', 'PL', 'CZ', 'AT', 'CH', 'LI', 'SK', 'HU',
          'SI', 'IT', 'SM', 'HR', 'BA', 'YF', 'ME', 'AL', 'MK'].map(code => {
          return {code: code};
        })
      }, {
        name: 'UTC + 2',
        data: ['FI', 'EE', 'LV', 'LT', 'BY', 'UA', 'MD', 'RO', 'BG', 'GR', 'TR', 'CY'].map(code => {
          return {code: code};
        })
      }, {
        name: 'UTC + 3',
        data: [{
          code: 'RU'
        }]
      }]
    });
  }
}

我得到了一个错误:

代码语言:javascript
复制
ERROR TypeError: Cannot read property '0' of undefined
    at eval (webpack-internal:///./node_modules/highcharts/modules/map.src.js:64)
    at Array.forEach (<anonymous>)
    at a.each (webpack-internal:///./node_modules/highcharts/highcharts.js:28)
    at G.eval (webpack-internal:///./node_modules/highcharts/modules/map.src.js:60)
    at eval (webpack-internal:///./node_modules/highcharts/highcharts.js:30)
    at Array.forEach (<anonymous>)
    at Object.a.each (webpack-internal:///./node_modules/highcharts/highcharts.js:28)
    at a.fireEvent (webpack-internal:///./node_modules/highcharts/highcharts.js:30)
    at G.getSeriesExtremes (webpack-internal:///./node_modules/highcharts/highcharts.js:127)
    at G.setScale (webpack-internal:///./node_modules/highcharts/highcharts.js:146)

这就是地图上没有任何数据的样子:

这是我的app.module.ts:

代码语言:javascript
复制
import {BrowserModule} from '@angular/platform-browser';
import {NgModule} from '@angular/core';
import { HttpClientModule } from '@angular/common/http';
import {ChartModule, HIGHCHARTS_MODULES} from 'angular-highcharts';
import * as more from 'highcharts/highcharts-more.src';
import * as highstock from 'highcharts/modules/stock.src';
import * as highmaps from 'highcharts/modules/map.src';
import * as maps from 'highcharts/modules/map.src';
import * as noData from 'highcharts/modules/no-data-to-display.src';
import * as drilldown from 'highcharts/modules/drilldown.src';
import {AppComponent} from './app.component';

@NgModule({
  declarations: [
    AppComponent
  ],
  imports: [
    BrowserModule,
    ChartModule,
    HttpClientModule
  ],
  providers: [{
    provide: HIGHCHARTS_MODULES, useFactory: () => {
      return [highstock, more, maps, noData, drilldown, highmaps];
    }
  }],
  bootstrap: [AppComponent],
  exports: [
    ChartModule
  ]
})
export class AppModule {
}
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-05-23 15:50:47

在挣扎了几个小时之后,app.module.ts文件中的映射的双重声明破坏了配置。从import * as maps from 'highcharts/modules/map.src'maps中删除providers解决了这个问题

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/50490618

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档