2016-11-04 81 views
1

我想与D3和Vizuly一起创建他们的径向进度条。不过,我正在努力找出Angular的方式来将这些JavaScript文件导入到我的组件中。你们能帮我找出一种方法让这个工作起作用吗?谢谢!带有角度2,D3和Vizuly的第三方库

declare const d3:any; 
declare const vizuly:any; 
import '../../../assets/d3.min.js'; 
import '../../../assets/vizuly_core.min.js'; 
// I am getting a vizuly not defined error in the file below. 
import '../../../assets/vizuly_radialprogress.min.js'; 

import { Component, Input } from '@angular/core'; 

@Component({ 
    selector: 'circlechart', 
    template: ` 
    <div class="container"> 
    <div id="viz_container"> 
     <div id="chart_container"></div> 
    </div> 
    </div> 
    `, 
    styleUrls: ['./circlechart.scss'] 
}) 
export class CircleChartComponent { 
    constructor() { 

    let viz_container; 
    let chart_container; 
    let viz; 

    viz_container = d3.selectAll("#viz_container") 
     .style("width", "600px") 
     .style("height","600px"); 

    chart_container = d3.select('#chart_container'); 

    viz = vizuly.viz.radial_progress(document.getElementById('chart_container')); 

    viz.data(80) 
      .min(0) 
      .max(100) 
      .capRadius(1); 

    viz.startAngle(250)  // Angle where progress bar starts 
     .endAngle(110)   // Angle where the progress bar stops 
     .arcThickness(.12)  // The thickness of the arc (as a ratio of radius) 
     .label(function (d,i) { // The 'label' property allows us to use a dynamic function for labeling. 
      return d3.format(".0f")(d); 
     }); 

    } 
} 
+0

如果您删除的组件进口,只是将它们导入您的index.html''它的工作原理?我期望它可以工作,但给出类型错误 – echonax

+0

没有类型错误,但它不起作用,因为组件内的作用域仍然是错误的。我不认为组件获得全球范围。 – jaruesink

回答

0

这里有一个plunker用于演示:Plunker

d3.select("div") 
     .transition().duration(500).style("width","500px") 
     .transition().duration(500).style("height","500px") 
     .transition().duration(500).style("color","red") 
     .transition().duration(500).style("background-color","red"); 

正如你可以看到我没有导入组件内部D3和它的作品。 但是,如果您尝试在您的IDE中执行此操作,将会出现类似“未知属性/模块d3”的错误。这是因为您正在使用打字稿编写代码,打字稿中没有d3模块。

因此,您需要获得 definition file for d3.js 并将其包含在您的类型中。现在打字稿会知道这个模块,不会抱怨。

+0

我可以让d3工作!他们也有自己的webpack模块。这是Vizuly,这是问题。 – jaruesink

+0

@jaruesink它基本上是一样的东西真的..检查plunker,我已经更新为vizuly – echonax

+1

我得到它的工作,我认为我有错误的viz对象。我没有使用.component。谢谢你的帮助! – jaruesink