angular 2+,如何在同一函数中使用D3.js的“ this”对象和组件

时间:2019-12-26 06:28:48

标签: angular d3.js

箭头功能可以获取角度分量的“ this”对象。 简单函数可以获取函数本身的“ this”对象。

例如:

@ViewChild('svg') element: ElementRef;
svg:any;

this.svg = d3.select(element.nativeElement)
.append('svg')
.attr('width', 200)
.attr('height',200)

this.svg.on("click", function() {
 // d3 'this' object
 console.log(this)
})

this.svg.on("click", ()=> {
// component 'this' object
 console.log(this)
})

但是我不能在同一函数中使用两个对象。

例如:

@ViewChild('svg1') element: ElementRef;
@ViewChild('svg2') element: ElementRef;
svg1:any;
svg2:any;

this.svg1 = d3.select(element.nativeElement)
    .append('svg')
    .attr('width', 200)
    .attr('height',200)

this.svg1.on("mousemove", ()=>{
  // Cannot use 'this' object for 'mousemove' event
  console.log(d3.mouse(this));
  // Can get 'this' object of the component
  console.log(this.svg2);
})

0 个答案:

没有答案