Kann immer noch nicht herausfinden, wie d3.drag() in Angular2 Komponente zu verwenden.d3.drag() in Angular2
Versuch:
d3.selectAll(".node").call(d3.drag().on("start", started));
Aber immer "Ungelöste Funktion oder Methode drag()".
Ich habe d3 installiert, es funktioniert recht gut. Ich habe d3 mit Import * als d3 von 'd3' importiert. Hier ist ein Beispiel von meinem Code:
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));
};
So kann ich D3 in Angular2 verwenden, um einige Elemente zu ziehen nach einigen Daten, aber ich bin nicht in der Lage ein bestimmtes Verhalten als Widerstand oder Zoom zu machen, auch wenn es funktioniert in einigen js Beispielen wie hier http://bl.ocks.org/enjalot/1378144 oder https://bl.ocks.org/mbostock/6123708, aber nicht in Angular2.
Wo und wie importieren Sie d3? Wo tritt dieser Fehler auf? – PierreDuc
Import * als d3 von 'd3'; –
Wie sieht Ihre Systemjs-Konfiguration aus, wenn Sie d3 berücksichtigen? – PierreDuc