Highcharts: `import`を使用して` moment.js`をモジュールとしてロードします

作成日 2018年07月23日  ·  3コメント  ·  ソース: highcharts/highcharts

期待される動作

Highchartsは、 importを使用してモジュールとしてロードすると、 momentを見つけることができるはずです。

実際の動作

momentwindowに保存されないため、次のようにmomentにアクセスしようとするとHighchartsが失敗します。
https://github.com/highcharts/highcharts/blob/3c8867e8ead548ada66c38f73fce74b2130dac8b/js/parts/Time.js#L370

再現手順のあるライブデモ

https://codesandbox.io/s/7yyz98kv4x

app/app.component.tsコードとコメントを参照してください

推奨される解決策

ユーザーが設定できるtime.momentなどのAPIオプションを追加して、上記の引用コードにmomentを次のように読み込むことができるようにします。

moment = options.moment || win.moment;

POC: https

回避策

momentwindow.momentとして設定すると、Highchartsがそれを見つけることができます。 例:

import * as moment from "moment";

window.moment = moment;
Enhancement

最も参考になるコメント

このヒントをどうもありがとう、次のスニピットは私にとってうまくいきました:

import { Component, Input, OnDestroy, OnInit, ViewChild } from '@angular/core';

import * as Highcharts from 'highcharts';
import ExportingModule from 'highcharts/modules/exporting';
import * as Moment from 'moment';
import * as mTZ from 'moment-timezone';

declare global {
  interface Window {
    moment: any;
  }
}
window.moment = Moment;
mTZ();

ExportingModule(Highcharts);
Highcharts.setOptions({
  title: {
...

@Component({
...
})
export class CellPowerGraphComponent implements OnInit, OnDestroy {
...

全てのコメント3件

同じ問題がありますが、提案された回避策は私にはうまくいきません。
コンパイル時にエラーメッセージが表示されます。
apps/frontend/src/app/solar-data/cell-power-graph/cell-power-graph.component.ts(8,8): error TS2339: Property 'moment' does not exist on type 'Window'.

次のように設定されました。

import { Component, Input, OnDestroy, OnInit, ViewChild } from '@angular/core';

import * as Highcharts from 'highcharts';
import ExportingModule from 'highcharts/modules/exporting';
import * as Moment from 'moment';
import * as mTZ from 'moment-timezone';

window.moment = Moment;
mTZ();

@mfechner
このエラーはビルドJavaScriptには影響しません-設定によってTSエラーでのビルドが防止されない限り。 私の解決策は単なる回避策なので、 windowanyキャストするか、他の方法を使用してこのエラーを抑制することで、このTSエラーを無視できます。

(window as any).moment = Moment;

または、 Windowインターフェイスを拡張して、 moment定義を追加することもできます。これは、このタイプのエラーの適切な解決策です。

このヒントをどうもありがとう、次のスニピットは私にとってうまくいきました:

import { Component, Input, OnDestroy, OnInit, ViewChild } from '@angular/core';

import * as Highcharts from 'highcharts';
import ExportingModule from 'highcharts/modules/exporting';
import * as Moment from 'moment';
import * as mTZ from 'moment-timezone';

declare global {
  interface Window {
    moment: any;
  }
}
window.moment = Moment;
mTZ();

ExportingModule(Highcharts);
Highcharts.setOptions({
  title: {
...

@Component({
...
})
export class CellPowerGraphComponent implements OnInit, OnDestroy {
...
このページは役に立ちましたか?
0 / 5 - 0 評価

関連する問題

vivekk123 picture vivekk123  ·  3コメント

zhy1stgg picture zhy1stgg  ·  3コメント

jocage picture jocage  ·  3コメント

madreason picture madreason  ·  3コメント

balupton picture balupton  ·  3コメント