fix(frontend): detruit les graphiques avec leur composant
Chart.js conserve chaque instance dans un registre lie au canvas et lui attache un observateur de redimensionnement. Sans destroy, tout survit a la destruction du composant, et une re-creation sur le meme canvas echoue avec "Canvas is already in use". Les doubles de test gagnent destroy : TestBed detruit les fixtures apres chaque test, un mock sans cette methode fait tomber les specs existantes.
This commit is contained in:
@@ -1,4 +1,12 @@
|
||||
import { Component, ElementRef, ViewChild, input, effect, AfterViewInit } from '@angular/core';
|
||||
import {
|
||||
Component,
|
||||
ElementRef,
|
||||
ViewChild,
|
||||
input,
|
||||
effect,
|
||||
AfterViewInit,
|
||||
OnDestroy,
|
||||
} from '@angular/core';
|
||||
import { Chart, registerables } from 'chart.js';
|
||||
|
||||
Chart.register(...registerables);
|
||||
@@ -9,7 +17,7 @@ Chart.register(...registerables);
|
||||
templateUrl: './consumption-gauge.html',
|
||||
styleUrl: './consumption-gauge.scss',
|
||||
})
|
||||
export class ConsumptionGauge implements AfterViewInit {
|
||||
export class ConsumptionGauge implements AfterViewInit, OnDestroy {
|
||||
consumption = input.required<number>();
|
||||
capacity = input.required<number>();
|
||||
|
||||
@@ -52,4 +60,8 @@ export class ConsumptionGauge implements AfterViewInit {
|
||||
},
|
||||
});
|
||||
}
|
||||
|
||||
ngOnDestroy(): void {
|
||||
this.chart?.destroy();
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user