ich bin nicht sicher über drewmoore des suggestiong eit ihr. Es schien nicht für mich zu funktionieren.
Ich habe zwei Vorschläge für die Fortsetzung.
Beste Antwort
Die erste ist eine Ergänzung zu Arlo Antwort. Als ich diesen Kommentar ursprünglich schrieb, konnte ich Arlos Antwort nicht zur Arbeit bringen. Jetzt habe ich verstanden warum. Ich habe versucht, das d3-Hierarchie-Paket zu verwenden. So installieren:
npm install d3 --save
npm install @types/d3 --save-dev
npm install @types/d3-hierarchy --save-dev
und dann unter Verwendung der Module auf diese Weise:
import * as d3 from "d3";
d3.hierarchy(blah);
Und dann würde es beklagen, dass sie nicht über das d3.hierarchy Mitglied kannte. Jetzt verstehe ich, dass ich dieses Objekt verwenden muss (ich weiß nicht, warum es vorher nicht registriert wurde). So aktualisiert:
import * as d3 from "d3";
import * as d3Hierarchy from "d3-hierarchy";
d3Hierarchy.hierarchy(blah);
Original-Antwort
Was die einzige Antwort zu sein scheint, die ich gefunden habe, so weit ist mit dem d3-ng2-service Modul unter dem Link befindet. Es ist kein großartiger Schalter, aber Sie können d3v4 in Ihrem eckigen 2 Projekt verwenden.
import { Component, OnInit, ElementRef } from '@angular/core';
import { D3Service, D3, Selection } from 'd3-ng2-service'; // <-- import the D3 Service, the type alias for the d3 variable and the Selection interface
@Component({
selector: 'app-test-d3',
templateUrl: 'test-d3.component.html',
styleUrls: ['test-d33.component.css']
})
export class TestD3Component implements OnInit {
private d3: D3; // <-- Define the private member which will hold the d3 reference
private parentNativeElement: any;
constructor(element: ElementRef, d3Service: D3Service) { // <-- pass the D3 Service into the constructor
this.d3 = d3Service.getD3(); // <-- obtain the d3 object from the D3 Service
this.parentNativeElement = element.nativeElement;
}
ngOnInit() {
let d3 = this.d3; // <-- for convenience use a block scope variable
let d3ParentElement: Selection<any, any, any, any>; // <-- Use the Selection interface (very basic here for illustration only)
// ...
if (this.parentNativeElement !== null) {
d3ParentElement = d3.select(this.parentNativeElement); // <-- use the D3 select method
// Do more D3 things
}
}
}
Ich habe im Moment keinen Weg gefunden, also habe ich gerade das d3v4-Objekt mit dem Typ Any definiert und bin auf meinem fröhlichen Weg gegangen. Bringt die Typen an Bord wenn sie fertig sind. Aber wenn es einen Weg gibt, würde ich es auch gerne wissen. –
Wie genau hast du das gemacht? Ich habe derzeit 'importieren * als D3 von 'd3';' aber 'importieren * als D3: any von 'd3';' funktioniert nicht ... – TommyF
Ich lade d3 in die Seite in einem eigenen Skript-Element, dann greifen es in meinem Controller mit einem erweiterten angular.IWindowService, die nur eine "d3: any" -Eigenschaft hinzugefügt. –