Angular2コンポーネントでd3.drag()を使用する方法がまだ見つかりません。d3.drag()in Angular2
しよう:
d3.selectAll(".node").call(d3.drag().on("start", started));
をしかし取得 "未解決の関数やメソッドドラッグを()"。
私はd3をインストールしました。これはかなりうまく動作しています。私は 'd3'からd3としてimport *を使ってd3をインポートしました。ここに私のコードの例は次のとおりです。
import {Component, OnInit} from '@angular/core';
import * as d3 from 'd3';
// some other imports
@Component({
selector: 'model-detail-d3',
inputs: ['modelData'],
templateUrl: 'app/shared/templates/d3.html',
//styleUrls: ['app/replication-model/d3.css']
providers: [DataModel]
})
export class ModelDetailD3Component implements OnInit {
private modelData : ModelData;
constructor(private someModel: SomeModel) {
this.someModel= someModel;
}
ngOnInit() {
this.someModel.setInstanceData(this.modelData);
var someItems: someItems[];
someItems = [];
if (this.someModel.getInstances()) someInstances = this.someModel.getInstances();
// d3 container
var svgContainer = d3.select("#d3-model")
.append("svg")
.attr("width", 600)
.attr("height", 300);
var d3Items = svgContainer.selectAll("rect")
.data(someInstances)
.enter()
.append("rect");
var defaultX = 10;
var defaultY = 10;
var spiAttributes = spiItems
.attr("x", function (spiItem, i) { return 10 + (someItem.d3.x || 10*i*defaultX); })
.attr("y", function (spiItem, i) { return 10 + (someItem.d3.y || 10*i*defaultY); })
.attr("height", function (someItem) { return (50); })
.attr("width", function (someItem) { return (80); })
.style("fill", function(someItem) { return "red"; })
// Add event to each item
.on('mouseover', (someItem) => {
this.onMouseOn(someItem);
})
.on('mouseout', (someItem) => {
this.onMouseOut();
})
.append('rect');
// HERE IS THE PROBLEM: "Unresolved function or method drag()"
svgContainer
.call(d3.drag()
.container(svgContainer)
.on("start", dragstarted)
.on("drag", dragged)
.on("end", dragended));
// d3.selectAll("rect").call(d3.drag().on("start", started));
};
だから私はいくつかのデータによると、いくつかの項目を描画するためにAngular2にD3を使用することができますが、私はそれが動作している場合でも、ドラッグやズームなど、いくつかの行動をすることはできませんよいくつかのjsの例では、ここではhttp://bl.ocks.org/enjalot/1378144またはhttps://bl.ocks.org/mbostock/6123708ですが、Angular2ではありません。あなたがd3-drag
パッケージをインストールする必要があります(d3.dragを使用するためには
どのようにd3をインポートしますか?このエラーはどこで発生しますか? – PierreDuc
import * d3から 'd3'; –
d3を考慮して、あなたのsystemjs設定はどのように見えますか? – PierreDuc