I want to use d3js in angular2, but when I want to add transition when element change it occur an error:
Property 'transition' does not exist on type 'Selection<BaseType, {}, null, undefined>'
I use angular-cli to generate project, and the version of angular is 4.0.0, and d3js is 4.8.0
Here is my typings.d.ts:
declare module 'd3' {
export * from 'd3-array';
export * from 'd3-axis';
export * from 'd3-brush';
export * from 'd3-chord';
export * from 'd3-collection';
export * from 'd3-color';
export * from 'd3-dispatch';
export * from 'd3-drag';
export * from 'd3-dsv';
export * from 'd3-ease';
export * from 'd3-force';
export * from 'd3-format';
export * from 'd3-geo';
export * from 'd3-hierarchy';
export * from 'd3-interpolate';
export * from 'd3-path';
export * from 'd3-polygon';
export * from 'd3-quadtree';
export * from 'd3-queue';
export * from 'd3-random';
export * from 'd3-request';
export * from 'd3-scale';
export * from 'd3-selection';
export * from 'd3-shape';
export * from 'd3-time';
export * from 'd3-time-format';
export * from 'd3-timer';
export * from 'd3-transition';
export * from 'd3-voronoi';
export * from 'd3-zoom';
}
Here is my app.component.ts
import * as d3 from 'd3';
......
d3.select(this).select("path").transition().attr("d", function(d) {
console.log(d);
return arc2(<any>d);
})
If I remove transition() it performs good.
How to solve it? Thanks
I have fixed my code by:
import { select as d3Select } from 'd3-selection';
import { transition as d3Transition } from 'd3-transition';
d3Select.prototype.transition = d3Transition;
and then use d3Select in your code insted of select
you can follow: https://github.com/DefinitelyTyped/DefinitelyTyped/issues/16176