У меня есть страница в моем веб-приложении angular2, где я показываю список элементов. Рядом с ним находится боковое меню.
Когда выбран один из элементов в списке, я показываю дополнительное подробное представление, включающее лепестковую диаграмму (используя библиотека ng2-charts), которая привязывается к массиву данных. Поскольку я извлекаю данные, которые хочу отобразить, из базы данных, массив инициализируется с использованием некоторых данных по умолчанию, а затем обновляется с помощью наблюдаемого:
public spiderChartData:any = [
{label: "",fill:false, scaleShowLabels : false, borderWidth:5,
fillColor: "rgba(220,220,220,0.2)",
data: [30,30,30,30,30]}
];
constructor(private fs : FirebaseService) { }
ngAfterViewInit() {
this.fs.getWorkoutRatings(this.wName).valueChanges().subscribe(res => {
this.ratings = res.map(x=>x);
console.log("data received");
this.spiderChartData = [
{label: "",fill:false, scaleShowLabels : false, borderWidth:5,
fillColor: "rgba(220,220,220,0.2)",
data: this.ratings;
});
}
По логу вижу, что нужные данные приходят практически моментально. Однако по какой-то причине диаграмма не перерисовывается, пока я не наведу курсор на боковое меню; затем диаграмма обновляется мгновенно.
Я хочу, чтобы диаграмма обновлялась, как только будут получены новые данные.
Я пытался обновить диаграмму вручную или даже уничтожить и перерисовать ее, но пока ничего не решило эту проблему.
Дополнительная информация
соответствующий HTML:
<canvas baseChart
[datasets]="spiderChartData"
[labels]="spiderChartLabels"
[chartType]="spiderChartType"
[options]="spiderChartOptions"
[colors]="spiderChartColours"
(chartHover)="chartHovered($event)"
(chartClick)="chartClicked($event)">
</canvas>
- Я в значительной степени скопировал весь код для диаграммы из другого, гораздо более простого проекта, который представлял собой всего одну страницу, показывающую эту диаграмму. Там автоматическое обновление работало без проблем.
- У меня возникли проблемы с выделением минимального рабочего примера для демонстрации, но я все равно надеюсь, что кто-нибудь сможет мне помочь.