xieziyu / angular2-echarts

angular directive for echarts v3
MIT License
33 stars 9 forks source link

怎么在ng2-admin中引用 #5

Open ZeyZhang opened 7 years ago

ZeyZhang commented 7 years ago

请问在ng2-admin的webpack中怎么引用

xieziyu commented 7 years ago

Hi @ZeyZhang ,

config/webpack.common.js 中的ProvidePlugin配置里面添加echarts的引用:

new webpack.ProvidePlugin({
  ...,
  echarts: "echarts"
}),

之后在适当的module里面引用AngularEchartsModule即可:

import { AngularEchartsModule } from 'angular2-echarts';

@NgModule({
  imports: [
    ...,
    AngularEchartsModule
  ],
  ...
})

希望对你有所帮助。

ZeyZhang commented 7 years ago

@xieziyu之前的已经解决了,我现在遇到一个很尴尬的问题,当页面加载的时候我让dataset=[];这个时候图表是没有的,后面我给dataset赋值也没有任何用处了,这是什么问题,能不能帮我解决一下,谢谢

xieziyu commented 7 years ago

@ZeyZhang , dataset 赋值部分你是怎么写的?要注意angular2的脏检查机制

ZeyZhang commented 7 years ago

@xieziyu 这是我的配置 ` tdOption = {

        'title' : {
        'text': '时域图',
        'subtext': '',
        'x': 'center',
    },
    'grid': {
        'containLabel':true
    },
    'toolbox': {
        'feature': {
            'saveAsImage': {}
        }
    },
    'tooltip' : {
        'trigger': 'axis',
        'axisPointer': {
            'animation': false
        }
    },
    'dataZoom': [
        {
            'show': true,
            'realtime': true,
        },
        {
            'type': 'inside',
            'realtime': true,
            'start': 65,
            'end': 85
        }
    ],
    'xAxis': {
        'type': 'value',
    },
    'yAxis': {
        'type': 'category',
        'axisLine': {'onZero': false},
        'data': ['0', '10', '20', '30', '40', '50', '60', '70', '80']
    },
    'series': [
        {
            'type': 'line',
            'smooth': true,
        }
    ],
    'smooth':true,
};`

这是我打开modal然后获取数据,刚开始的dataset是td=[]; chartsModal(sensorId){ this.getTimeData(sensorId).subscribe(res=>{ if(res.content.records[0].datas[0]){ for (var i =0; i< res.content.records[0].datas[0].data.length; i++){ this.td[i]=[i,res.content.records[0].datas[0].data[i]]; } }else{ this.td=[]; } console.log(this.td); this.charts.show(); }) }

xieziyu commented 7 years ago

@ZeyZhang 了解了。td的引用没有变,所以angular2没有检测到dataset的changes。简单地修改方式就是:

for (var i =0; i< res.content.records[0].datas[0].data.length; i++) {
  // 添加这一行:
  this.td = [];
  ...
}
ZeyZhang commented 7 years ago

@xieziyu 是数据格式的问题。

ZeyZhang commented 7 years ago

@xieziyu 能否加个QQ,方便沟通

xieziyu commented 7 years ago

@ZeyZhang 好多年没有用过QQ了: ),有问题直接邮件吧:ziyu.xie@foxmail.com

ZeyZhang commented 7 years ago

@xieziyu 好的,多谢

ZeyZhang commented 7 years ago

@xieziyu 我在ng2-bootstrap的modal里面用echarts,刚打开modal的时候没有办法自适应,只有让浏览器窗口大小变化的时候,图表才会自适应,有什么方法可以解决的吗?

xieziyu commented 7 years ago

@ZeyZhang 刷新数据也会让图表自适应

ZeyZhang commented 7 years ago

@xieziyu 打开弹窗就如下图所示,只有拖动窗口才能正常,每次打开窗口之前都会get新数据,但是还是这样的。 image

xieziyu commented 7 years ago

@ZeyZhang 试试打开窗口之后,再将get到的新数据注入。

ZeyZhang commented 7 years ago

@设一个setTimeOut就解决了,然后用loading来遮盖一下,loading样式可以自己写吗

xieziyu commented 7 years ago

@ZeyZhang Good,loading这块,我还没有支持自定义样式 : )

ZeyZhang commented 7 years ago

@xieziyu 好的,多谢

ZeyZhang commented 7 years ago

@xieziyu 一幅图画里面动态添加多条线要怎么实现,比如我点击button,dataset新增一组数据,但是图表没有任何变化,请指教。

xieziyu commented 7 years ago

@ZeyZhang 见之前的回答,dataset本身的引用要发生更新。在新增数据前把dataset = [];再将多组数据重新push进来。