2016-12-08 30 views
6

d3 V4'ün beni tamamen beceriksiz hissettirme yeteneğini seviyorum. Diğer paketlerimle birlikte web paketimde kendi özel paketimi nasıl oluşturacağımı anlayamıyorum ... bunun yerine sadece vanilla d3 paketini alıp çoklu seçim özelliği eklemeye çalışıyorum.d3-selection-multi'yi d3'e nasıl eklersiniz?

Bileşenlerim arasında d3 nesnesini bağımlılığa enjekte etmek için Angular 2'de bir d3 hizmeti oluşturdum. Ben

let test = this.d3.select("body").styles({ 
      "background-color": "#F00", 
      "color": "#00F" 
     }); 

Tarayıcım olduğunu .attrs bilmiyor şikayet kullanarak .attrs gibi, çoklu seçim yeteneklerini erişmeye çalıştığınızda kadar

import {Injectable} from "@angular/core"; 

import * as d3 from "d3"; 
import "d3-selection-multi"; 
export type D3 = typeof d3; 

@Injectable() 
export class D3Service { 
    constructor() { 
    } 

    private d3: D3 = d3; 

    getD3 =() => { 
     return this.d3; 
    }; 
} 

Her şey iyi çalışıyor.

error_handler.js:47 EXCEPTION: Uncaught (in promise): Error: Error in ./ListingComponent class ListingComponent_Host - inline template:0:0 caused by: this.d3.select(...).styles is not a function TypeError: this.d3.select(...).styles is not a function

Ben de boşuna Object.assign iki ojects birleştirme denedim.

Neyi yanlış yapıyorum? Muhtemelen aptalca bir şeydir.

+0

Attrs() ile aynı sorunu vurun ... çözmedim. –

cevap

-1

d3.styles.Please adlı bir işlev yoktur. Lütfen bunu deneyin.

this.d3.select("body").style("background-color", "#F00") 
         .style("color", "#00F"); 
+2

d3 selection-multi içinde 'styles' var. OP'nin sorusu tam olarak bununla ilgili. –

İlgili konular