Attention si vous utilisez des jetons
En essayant de rendre mon application aussi modulaire que possible, j'utilise souvent des jetons de fournisseur pour fournir un service à un composant. Il semble que ces derniers n'obtiennent PAS leur ngOnDestroy
les méthodes ont été appelées :-(
eg.
export const PAYMENTPANEL_SERVICE = new InjectionToken<PaymentPanelService>('PAYMENTPANEL_SERVICE');
Avec une section fournisseur dans un composant :
{
provide: PAYMENTPANEL_SERVICE,
useExisting: ShopPaymentPanelService
}
Mon ShopPaymentPanelService
n'a PAS son ngOnDestroy
appelée lorsque le composant est éliminé. Je viens de le découvrir à la dure !
Une solution de contournement est de fournir le service en conjonction avec useExisting
.
[
ShopPaymentPanelService,
{
provide: PAYMENTPANEL_SERVICE,
useExisting: ShopPaymentPanelService
}
]
Quand j'ai fait ça, le ngOnDispose
a été appelé comme prévu.
Je ne sais pas si c'est un bogue ou non, mais c'est très inattendu.