2016-07-12 59 views
11

Esistono molte discrepanze sul modo corretto di importare e utilizzare D3 in un'applicazione Angular 2.0.0-rc.4. Ho visto:Modo corretto per importare D3.js in un'applicazione Angular 2

1) Per essere aggiunti al root file index.html:

<script src="https://d3js.org/d3.v4.min.js"></script> 

Quindi, utilizzando:

Import * as d3 from 'd3'; 

in qualsiasi file componente che voglio implementare un D3 visiva . in

2) Uso di NPM:

npm install d3 --save 
typings install d3 --save 

Poi ancora utilizzando:

Import * as d3 from 'd3'; 

se con dattiloscritto 2.0.0 Beta (se sto leggendo la documentazione a destra) che posso fare:

npm install --save @types/d3 

Quindi utilizzare davvero:

Import * as d3 from 'd3'; 

- Con entrambi i modi, aggiungendo quanto segue allo var map = { } al sistema systemjs.config.js

'd3':'node_modules/d3/d3.min.js' 

e aggiungendo alla var packages = { }

'd3':{main:'build/d3.js',defaultExtension:'js'} 

qualcuno può confermare il modo corretto per implementare D3? Grazie.

+0

vorrebbe sapere a, come il mio importazione D3 mi sta dando una linea rossa "non riesce a trovare il modulo ". Ho fatto l'installazione di npm d3 – nCore

+1

Una lieve variazione dell'opzione 2 sopra funziona per me, vedi: https://gist.github.com/satyagraha/5544424965c41f261ac245a92673aa71 – satyagraha

risposta

4

L'unico modo che funziona per me è quello di creare un file "custom-d3.ts", all'interno esporto quello che mi serve (per esempio):

export * from 'd3-axis'; 
export * from 'd3-format'; 
export * from 'd3-interpolate'; 
export * from 'd3-scale'; 
export * from 'd3-selection'; 
export * from 'd3-shape'; 

E poi in altri miei file TS I possibile importare d3 come: import * as d3 from '.../../custom-d3.ts'.

Ottengo il completamento automatico installando i tipi @types/d3 e nessun errore con dattiloscritto.

È inoltre possibile utilizzare questa libreria che fa tutto questo per voi ed è iniettabile nelle classi: https://github.com/tomwanzek/d3-ng2-service

+2

Se non sei troppo preoccupato di quanti moduli d3 (ad es.durante lo sviluppo) puoi semplicemente importare tutti i moduli d3 con 'import * come d3 da" d3 ";' Quando vai in produzione, vorrai usare l'esempio di Oliver che è molto simile a come il team di Angular2 suggerisce di usare rxjs . – Ben

1

io non sono sicuro se questo è il modo corretto per farlo, ma nei tuoi tipizzazioni/index.d.ts File Basta aggiungere qualcosa di simile /// <reference path="modules/d3/d3.d.ts" />.

non ho pasticciare con lo systemjs.config .js e I non avevano bisogno di altre istruzioni di importazione all'interno dei componenti, ma sembravano fare il trucco, non ho alcun errore rosso.