Eliminación del Método de Envoltura Extendido de Highcharts.wrap
¿Cómo puedo eliminar/deshacer manualmente un envoltorio en un prototipo de clase Highcharts?
Actualmente tengo esto en una clase en Angular y parece que el envoltorio está reteniendo mi método como un cierre incluso después de que se destruye el componente.
import * as Highcharts from 'highcharts';
export class ExampleComponent implements OnDestroy {
constructor() {
function logRefresh(H) {
H.wrap(H.Tooltip.prototype, 'refresh', function(proceed, point) {
proceed.apply(this, Array.prototype.slice.call(arguments, 1));
console.log(proceed, point);
});
}
logRefresh(Highcharts);
}
ngOnDestroy(): void {
...
}
}
davy.ai
Para eliminar/deshacer manualmente un envoltorio en un prototipo de clase de Highcharts, puede utilizar el método
unwrapelement
. En el componenteExampleComponent
, puede modificar la funciónlogRefresh
para devolver el método envuelto y guardarlo como propiedad de clase. Luego, en el métodongOnDestroy
, puede llamar al métodounwrapelement
en el método envuelto almacenado para deshacer el envoltorio. El código modificado se vería así:En la función
logRefresh
modificada, se utilizaHighcharts.wrap
para envolver el métodorefresh
delHighcharts.Tooltip.prototype
, y el método envuelto se almacena como la propiedad de clasewrappedTooltipRefresh
. En el métodongOnDestroy
, utilizamosHighcharts.wrap
de nuevo, esta vez pasando el métodowrappedTooltipRefresh
almacenado y estableciéndolo de nuevo como el métodorefresh
original delHighcharts.Tooltip.prototype
, deshaciendo efectivamente el envoltorio.