angular - D3、TS 和 Angular 2

标签 angular d3.js typescript typescript-typings

我正在尝试将 D3 v4 与 Angular 2 (Typescript) 结合使用。我目前正在研究 D3 v4。我能够在 stackoverflow 中找到类似问题的一些答案,但没有成功。我已经导入了大部分 D3 库及其类型(我使用的是 TS 2.0),并且在我的组件文件中我需要 import * as d3 from 'd3';。这个问题对我来说可能是 Angular 2、Typescript 和第 3 方库……到目前为止一团糟。

在我的组件文件中,我有一些这样的代码:

        let arc = d3.arc()
            .outerRadius(chartHeight / 2)
            .innerRadius(chartHeight / 4)
            .padAngle(0.03)
            .cornerRadius(8);

        let pieG = chartLayer.selectAll("g")
            .data([data])
            .enter()
            .append("g")
            .attr("transform", "translate(" + [chartWidth / 2, chartHeight / 2] + ")");

        let block = pieG.selectAll(".arc")
            .data(arcs);

        let newBlock = block.enter().append("g").classed("arc", true);

        newBlock.append("path")
            .attr("d", arc)
            .attr("id", function (d, i) {
                return "arc-" + i
            })
            .attr("stroke", "gray")
            .attr("fill", function (d, i) {
                return d3.interpolateCool(Math.random())
            });

如您所见,我在第一行定义了 arc 并在第 19 行使用它,但出现错误:

[at-loader] src\piechart\piechart.component.ts:19:28
    Argument of type 'Arc<any, DefaultArcObject>' is not assignable to      parameter of type '(this: BaseType, datum: PieArcDatum<number | { valueOf():    number; }>, index: num
  ber, groups: Base...'.
  Types of parameters 'd' and 'datum' are incompatible.
    Type 'PieArcDatum<number | { valueOf(): number; }>' is not assignable to type 'DefaultArcObject'.
      Property 'innerRadius' is missing in type 'PieArcDatum<number | { valueOf(): number; }>'.

Arch 和 arc 似乎是在 d3-shape 类型和 d3-path 类型中定义的。

任何可以帮助我的人...我花了几天时间尝试使用 angular 2、TS 和 D3 v4 做 POC,但到目前为止没有运气...我在网上看到了所有关于它的文章,其中大部分都有旧版本或不工作。我觉得这是一个打字问题。 Angular 2 和第三方库是一场噩梦。

最佳答案

只需要投arc作为any .所以应该是.attr("d", <any>arc)

关于angular - D3、TS 和 Angular 2,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40919385/

相关文章:

javascript - 分发各种@angular/material模块的 Angular 共享模块NullInjectorError : No provider

javascript - 在 Angular 2 中获取数组的副本而不影响原始数组

angular - 如何在 Angular 中异步管道观察

html - 密码必须与 Angular 中的响应式(Reactive)表单匹配

Google AppS 脚本项目中的 TypeScript 类顺序

javascript - 如何在 Angular 2 中延迟加载模板的一部分?

javascript - ngModel 在 Angular 4 中无法正常工作

javascript - 更新、退出、更新、进入带有转换的模式

javascript - 在 d3.js 中插入子元素

javascript - 仅当圆圈具有关联注释时才在折线图中附加圆圈