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

Cow*_*man 7 d3.js angular

我喜欢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;
    };
}
Run Code Online (Sandbox Code Playgroud)

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

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

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

error_handler.js:47 EXCEPTION:未捕获(在promise中):错误:./ListingComponent类中的错误ListingComponent_Host - 内联模板:0:0由以下原因引起:this.d3.select(...).styles不是函数TypeError: this.d3.select(...).styles不是一个函数

我也尝试合并这两个项目Object.assign无济于事.

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

Doe*_*oes -2

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

this.d3.select("body").style("background-color", "#F00")
                      .style("color", "#00F");
Run Code Online (Sandbox Code Playgroud)

  • d3 Selection-multi 中有“styles”。OP的问题正是与此相关。 (4认同)