У меня есть следующий код для component.ts
export class HomeComponent implements OnInit {
Linecap = {};
dataArray=[];
constructor(private chartGetDataService: ChartGetDataService) {
}
ngOnInit(): void {
this.chartPlotting();
}
public testMethod(){
this.chartGetDataService.getLatestData1().subscribe( list=>{ this.dataArray=list.map(item=>{return item.payload.val()});} );
console.log(this.dataArray);
return this.dataArray;
}
public chartPlotting(){
this.Linecap= new Chart('canvas',
{
type: 'line',
data: { labels: [moment().toDate().getTime()], datasets: [{ label:'Flow',yAxisID: 'A',lineTension: 0, data: [] , borderColor: '#3cb371', fill: false ,borderWidth:2},
]
},
options: { responsive: true,animation: {duration: 0},hover: {animationDuration: 0},responsiveAnimationDuration: 0,
scales: { xAxes: [{ type: 'realtime',time: { parser: undefined} , display: true }],
yAxes: [{ id:'A', display: true, ticks: { beginAtZero: true, fontColor:'#f4af07', stepSize: 10, max: 100}},
]
},
plugins: { streaming: {
duration: 60000,
refresh: 2000,
delay: 3000,
pause: false,
ttl: undefined,
frameRate: 2,
onRefresh: function(Linecap) {
console.log(this.testMethod())
console.log(this.dataArray)
Linecap.data.datasets[0].data.push({x: Date.now(), y: this.dataArray[2] });
Linecap.update({ preservation: true });
}
}
},
}
})
}
Я застрял с 2 проблемами в этом коде.
- Мой первый файл console.log в testMethod () возвращает требуемое значение, что означает, что метод работает нормально, а значения сохраняются в dataArray , но когда я пытаюсь чтение dataArray внутри onRefre sh
Linecap.data.datasets[0].data.push({x: Date.now(), y: this.dataArray[2] });
функция вызывает ошибку ОШИБКА TypeError: Невозможно прочитать свойство 'dataArray' из неопределенного - Если я вызываю testMethod в функции onRefre sh, такой как
var ws=this.testMethod()
, это выдает ошибку ОШИБКА TypeError: Невозможно прочитать свойство 'testMethod' из неопределенного . Последующий вызов console.log(this.testMethod())
также вызывает ту же ошибку
Что я не так делаю? Я не могу его найти. Как мне решить неопределенную ошибку для этого кода. Если я вызываю testMethod вне функции onRefre sh, он работает отлично, но возвращает пустой dataArray.