1

これは少し厄介な質問です。amCharts について質問しているように見えますが、HTTP リクエストから配列を抽出し、それを変数に変換してサードパーティの javacript に配置する方法を理解しようとしています。

AmCharts サポートが親切に回答してくれた この質問から、すべてはここから始まります。

plnkerからわかるように。チャートは機能しています。グラフのデータはハードコードされています:

`var chartData = [{date: new Date(2015,2,31,0,0,0,       0),value:372.10,volume:2506100},{date: new Date(2015,3,1,0, 0, 0, 0),value:370.26,volume:2458100},{date: new Date(2015,3,2,0, 0, 0, 0),value:372.25,volume:1875300},{date: new Date(2015,3,6,0, 0, 0, 0),value:377.04,volume:3050700}];`

これで、amCharts の部分が機能することがわかりました。ハードコーディングされたデータを json リクエストに変更して動的にできるようにする問題がどこにあるのかを理解してください。これはとてつもなく難しいことではないと思いますが、私の人生では、それを理解することはできないようです.

最初の問題は、.map、.subscribe、または .observable に関するドキュメントが見つからないことです。

これは、最初のものと非常によく似たプランカーですが、http プロバイダーと注入可能機能を備えています。サービスからデータを取得して AmCharts 関数に配置する方法がわからないため、壊れています。http プロバイダーからデータを取得し、NgFor を使用してテンプレートに表示する方法は知っていますが、テンプレート (ビュー) には必要ありません。ご覧のとおり、getTitle() 関数を使用して、サービスからデータを転送することに成功しています。

    this.chart_data =_dataService.getEntries();
    console.log('Does this work? '+this.chart_data);

    this.title = _dataService.getTitle();
    console.log('This works '+this.title);

    // Transfer the http request to chartData to it can go into Amcharts
    // I think this should be string?
    var chartData = this.chart_data;

究極の問題は、サービスを使用してデータを取得し、そのデータを変数に変換してグラフに配置できない理由です。json が正しくフォーマットされていない可能性があるため、いくつかの手がかりが options.json にあると思われますか? 正しい変数を宣言していますか? 最後に、オブザーバブル/マップと関係があるのでしょうか?

4

2 に答える 2

0

getEntriesメソッドがDataServiceオブザーバブルを返す場合、データを取得するためにサブスクライブする必要があります。

_dataService.getEntries().subscribe(
  (data) => {
    this.chart_data = data;
  });

データは HTTP 呼び出しから非同期に受信されることを忘れないでください。このhttp.getメソッドは、将来データを受け取るオブザーバブル (約束に「類似した」もの) を返します。しかし、getEntriesメソッドがデータを返すとき、まだそこにはありません...

これgetTitleは同期メソッドであるため、以前と同じように呼び出すことができます。

于 2016-02-26T17:41:12.523 に答える