ho integrato con successo angolare 2 (Alpha 44) con d3.js:Utilizzando d3.js con angolare 2
<html>
<head>
<title>Angular 2 QuickStart</title>
<script src="../node_modules/systemjs/dist/system.src.js"></script>
<script src="../node_modules/angular2/bundles/angular2.dev.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/d3/3.5.6/d3.min.js" charset="utf-8"></script>
<script>
System.config({packages: {'app': {defaultExtension: 'js'}}});
System.import('app/app');
</script>
</head>
<body>
<my-app>Loading...</my-app>
</body>
</html>
app.js:
/// <reference path="./../../typings/tsd.d.ts" />
import {Component, bootstrap, ElementRef} from 'angular2/angular2';
@Component({
selector: 'my-app',
template: '<h1>D3.js Integrated if background is yellow</h1>',
providers: [ElementRef]
})
class AppComponent {
elementRef: ElementRef;
constructor(elementRef: ElementRef) {
this.elementRef = elementRef;
}
afterViewInit(){
console.log("afterViewInit() called");
d3.select(this.elementRef.nativeElement).select("h1").style("background-color", "yellow");
}
}
bootstrap(AppComponent);
tutto funziona bene. Ma la documentazione di Angular 2 per ElementRef afferma quanto segue:
Utilizzare questa API come ultima risorsa quando è necessario l'accesso diretto a DOM. Utilizzare invece i modelli e l'associazione dati forniti da Angular. In alternativa, date un'occhiata a {@link Renderer} che fornisce API che possono essere tranquillamente utilizzate anche quando l'accesso diretto agli elementi nativi non è supportato. Affidarsi all'accesso DOM diretto crea un legame stretto tra l'applicazione e i livelli di rendering, rendendo impossibile la separazione dei due e l'implementazione dell'applicazione in un web worker.
Ora sorge la domanda su come integrare D3.js con le API di Renderer?
È questo in qualsiasi aiuto? http://www.ng-newsletter.com/posts/d3-on-angular.html – urosjarc
Sto anche cercando di far funzionare D3 con angular 2. Nell'esempio sopra, posso vedere che fai riferimento allo script d3 in index.html, ma non riesco a vedere come ottieni la variabile d3 in app.js? – user2915962
@ user2915962 - npm installa d3, assicura le esecuzioni di postinstall e d3.d.ts viene creato da tsd, quindi 'importa * come d3 da' d3/d3 '; ' – drewmoore