2016-01-07 11 views
11

私は角度とタイプスクリプトに慣れていないので、これはおそらく基本的なものです。サードパーティー製JS(Angular2タイプ)

私は、(Chart.jsを使用して)グラフでangle2コンポーネントをテンプレート内で作成しようとしています。

具体的にはChart.JSを使用しているchart directiveが開発されていますが、指示を使用できないインスタンスに間違いなく出てくるので、これを行う方法を理解したいと思います。これまでのところ、私はテンプレートにこの単純なことを行うことを試みてきました

<canvas id="chart"></canvas> 
<script> 
$(function() { 
//instantiate chart on $("#chart") 
}); 
</script> 

しかし、テンプレートがangular2によってロードされたときに、このジャバスクリプトも実行されません。

どうすればいいですか?

+0

あなたは何をしようとしていますか?そしてこれはタイスクリプトと何が関係していますか?あなたの質問とコードは型コピーについて何も表示していません。 – Pogrindis

+0

単に私がtypescriptで私のangular2をコーディングしています。私はtypescriptファイルにchart.jsのjavascriptを書くことができないので、適切であると思った。 – Dynde

+0

あなたはtypescriptを書いているなら、ブラウザのjavascriptにコンパイルする必要がある。 JavaScriptのみを理解しています。 – Jai

答えて

11

@Pogrindisの助けを借りて、私は、あまりにも複雑ではない、使いやすいソリューションを見つけたと思います。私は最終的に、この持っているだけでhereからchart.jsのためのタイピングの定義を追加し、カスタムディレクティブでそれを参照することにより

chart.directive.ts

/// <reference path="../../typings/chartjs/chart.d.ts" /> 

import {Directive, ElementRef, Renderer, Input} from 'angular2/core'; 
@Directive({ 
    selector: '[chart]' 
}) 
export class ChartDirective { 
    constructor(el: ElementRef, renderer: Renderer) { 
     //el.nativeElement.style.backgroundColor = 'yellow'; 
     var data = { 
      labels: ["January", "February", "March", "April", "May", "June", "July"], 
      datasets: [ 
       { 
        label: "My First dataset", 
        fillColor: "rgba(220,220,220,0.2)", 
        strokeColor: "rgba(220,220,220,1)", 
        pointColor: "rgba(220,220,220,1)", 
        pointStrokeColor: "#fff", 
        pointHighlightFill: "#fff", 
        pointHighlightStroke: "rgba(220,220,220,1)", 
        data: [65, 59, 80, 81, 56, 55, 40] 
       }, 
       { 
        label: "My Second dataset", 
        fillColor: "rgba(151,187,205,0.2)", 
        strokeColor: "rgba(151,187,205,1)", 
        pointColor: "rgba(151,187,205,1)", 
        pointStrokeColor: "#fff", 
        pointHighlightFill: "#fff", 
        pointHighlightStroke: "rgba(151,187,205,1)", 
        data: [28, 48, 40, 19, 86, 27, 90] 
       } 
      ] 
     }; 
     var ctx: any = el.nativeElement.getContext("2d"); 
     var lineChart = new Chart(ctx); 
     ////var lineChartOptions = areaChartOptions; 
     ////lineChartOptions.datasetFill = false; 
     lineChart.Line(data); 
    } 
} 

app.component.tsを

import {Component} from 'angular2/core'; 
import {ChartDirective} from './chart.directive'; 

@Component({ 
    directives: [ChartDirective], 
    selector: 'chart-graph', 
    templateUrl: '/js/app/template.html' 
}) 

export class AppComponent { } 

とtemplate.html:

<canvas id="myChart" chart width="400" height="400"></canvas> 
+0

ありがとう、ありがとう、これはまさに私が探していたものでした。なぜあなたはDefinitelyTypedが必要なのかという一般的な考え方がありますが、実装方法はやや混乱しています。 1. git clone DefinitelyTyped、2.次に、 'をindex.htmlで参照しましたか?あなたの答えをもう少し詳しく説明することができます。私が理解している他のすべて、Angular2でも! – Chad

+2

これはトリックでした/// これはAngular2のコマンドまたはラインではわかりませんでしたが、なんらかの理由で行があります。それにもかかわらず、この回答がChart.jsとAngular2で実行されるように働いていることを確認してください!ありがとう@dynde – Chad

+0

@Dynde答えに記載されているタイピングでどのcharts.jsのバージョンを使用しましたか? –

関連する問題