如何将d3-selection-multi添加到d3?

时间:2016-12-08 05:03:07

标签: angular d3.js

我喜欢d3 V4让我觉得完全无能的能力。我似乎无法弄清楚如何在webpack中创建我自己的自定义包以及我的其他模块......所以我只是尝试使用vanilla d3包并为其添加多选功能。

我在Angular 2中创建了一个d3服务,依赖注入我的组件之间的d3对象。

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;
    };
}

一切都很好,直到我尝试访问多种选择功能,例如使用.attrs

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

我的浏览器抱怨它不知道.attrs是什么。

  

error_handler.js:47 EXCEPTION:未捕获(在承诺中):错误:错误   ./ListingComponent类ListingComponent_Host - 内联模板:0:0   引起的:this.d3.select(...)。styles不是函数TypeError:   this.d3.select(...)。styles不是函数

我也试过用Object.assign合并这两个对象无济于事。

我做错了什么?这可能是愚蠢的事情。

1 个答案:

答案 0 :(得分:-2)

没有名为d3.styles的函数。请试试这个。

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