Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angular/33.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Angular AmStockCharts updateChart:无法设置属性';数据上下文';未定义的_Angular_Typescript_Amcharts - Fatal编程技术网

Angular AmStockCharts updateChart:无法设置属性';数据上下文';未定义的

Angular AmStockCharts updateChart:无法设置属性';数据上下文';未定义的,angular,typescript,amcharts,Angular,Typescript,Amcharts,我正在使用angular 4.3.6和typescript 2.4.2。我正在从套接字读取一些数据,并试图将它们添加到数据提供程序中 基于此示例: 我正在为图表的数据更改排队。这适用于序列图,但对于股票图,我收到以下错误: ERROR TypeError: Cannot set property 'dataContext' of undefined at b.parseStockData (amstock.js:formatted:232) at b.updateData (a

我正在使用angular 4.3.6和typescript 2.4.2。我正在从套接字读取一些数据,并试图将它们添加到数据提供程序中

基于此示例:

我正在为图表的数据更改排队。这适用于序列图,但对于股票图,我收到以下错误:

ERROR TypeError: Cannot set property 'dataContext' of undefined
    at b.parseStockData (amstock.js:formatted:232)
    at b.updateData (amstock.js:formatted:145)
    at b.afterWrite (amstock.js:formatted:91)
    at b.write (amstock.js:formatted:52)
    at b.validateNow (amstock.js:formatted:1143)
    at index.js:335
    at ZoneDelegate.webpackJsonp.../../../../zone.js/dist/zone.js.ZoneDelegate.invoke (zone.js:392)
    at Zone.webpackJsonp.../../../../zone.js/dist/zone.js.Zone.run (zone.js:142)
    at NgZone.webpackJsonp.../../../core/@angular/core.es5.js.NgZone.runOutsideAngular (core.es5.js:3844)
    at AmChartsService.webpackJsonp.../../../../@amcharts/amcharts3-angular/es2015/index.js.AmChartsService.updateChart (index.js:333)
这是我的代码(错误发生在updateChart=>parseStockData上):

从'@angular/core'导入{Component,OnInit};
从'@angular/Router'导入{Router};
从“rxjs/Rx”导入{Subject,observatable,Subscription};
从“../../services/websocket.service”导入{WebsocketService};
从“../../entities/SensorData”导入{SensorData};
从“@amcharts/amcharts3”导入{AmChartsService,AmChart}”;
从“../../app.enums”导入{MessageTypes};
@组成部分({
templateUrl:'first.component.html',
提供者:[WebsocketService,AmChartsService]
})
导出类DashboardComponent实现OnInit{
私人海图:阿姆查特;
公共图表数据:数组=[];
私人插座:主体;
私有updateQueue=[];
私有完成加载:布尔值=false;
结果:字符串[];
建造师(
私有websocketService:websocketService,
专用AmCharts:AmCharts服务){
this.socket=_websocketService.createWebsocket();
让updateChartInterval=setInterval(()=>{
this.processUpdateQueue();
如果(此完成加载){
clearInterval(updateChartInterval);
}
}, 500);
}
公共处理数据(数据:传感器数据):无效{
if(data.messageType==MessageTypes.BVP){
这个是.chartData.push({
日期:新日期(data.data.timestamp),
bvp:data.data.value
});
}
if(data.messageType==MessageTypes.GSR){
这个是.chartData.push({
日期:新日期(data.data.timestamp),
gsr:data.data.value
});
}
this.updateQueue.push({“chart”:this.chart,“data”:this.chartData})
};
public processUpdateQueue():void{
if(this.updateQueue.length){
让item=this.updateQueue.shift();
如果(项目!=未定义){
this.AmCharts.updateChart(item.chart,()=>{
item.chart.dataSets[0].dataProvider.push(item.data);
});
}
}
};
ngAfterViewInit(){
this.chart=this.AmCharts.makeChart(“chartdiv”,this.makeOptions());
}
makeOptions(){
返回{
“类型”:“库存”,
“主题”:“光”,
“Gluentheend”:没错,
“数据集”:[{
“标题”:“第一个数据集”,
“dataProvider”:this.chartData,
“类别字段”:“日期”
}],
“小组”:[{
“showCategoryAxis”:错误,
“标题”:“价值”,
“百分高度”:60,
“股票图表”:[{
“id”:“g1”,
“valueField”:“bvp”
}],
“stockLegend”:{}
}, {
“标题”:“卷”,
“百分高度”:40,
“股票图表”:[{
“valueField”:“gsr”,
“类型”:“列”
}],
“stockLegend”:{}
}],
“图表滚动条设置”:{
“图形”:“g1”
},
};
}
恩贡德斯特罗(){
如果(此图表){
this.AmCharts.destroyChart(this.chart);
}
}
ngOnInit():void{
这是socket.subscribe(
消息=>{
如果(message.data==“完成”){
this.finishedLoading=真;
控制台日志(“已完成加载数据”);
}否则{
let data:SensorData=JSON.parse(message.data);
这是handleData(数据);
}
},
错误=>{
console.log(错误)
}
);
}
}

我发现了问题。将makeOptions中的属性数据集更改为:

"dataSets": [{
            "title": "first data set",
            "fieldMappings": [{
                "fromField": "bvp",
                "toField": "bvp"
            }, {
                "fromField": "gsr",
                "toField": "gsr"
            }],
            "dataProvider": this.chartData,
            "categoryField": "date"
        }]

解决了这个问题。股票图表似乎需要字段映射。

我发现了这个问题。将makeOptions中的属性数据集更改为:

"dataSets": [{
            "title": "first data set",
            "fieldMappings": [{
                "fromField": "bvp",
                "toField": "bvp"
            }, {
                "fromField": "gsr",
                "toField": "gsr"
            }],
            "dataProvider": this.chartData,
            "categoryField": "date"
        }]
解决了这个问题。股票图表似乎需要字段映射