Ostrożnie, jeśli używasz tokenów
Próbując uczynić moją aplikację tak modułową, jak to tylko możliwe, często używam tokenów dostawców do świadczenia usługi dla składnika. Wygląda na to, że te NIE otrzymująngOnDestroy
metod o nazwie :-(
na przykład.
export const PAYMENTPANEL_SERVICE = new InjectionToken<PaymentPanelService>('PAYMENTPANEL_SERVICE');
Z sekcją dostawcy w komponencie:
{
provide: PAYMENTPANEL_SERVICE,
useExisting: ShopPaymentPanelService
}
Mój ShopPaymentPanelService
NIE ma swojegongOnDestroy
metody wywoływanej, gdy składnik jest usuwany. Po prostu odkryłem to na własnej skórze!
Obejściem problemu jest udostępnienie usługi w połączeniu z useExisting
.
[
ShopPaymentPanelService,
{
provide: PAYMENTPANEL_SERVICE,
useExisting: ShopPaymentPanelService
}
]
Kiedy to zrobiłem, ngOnDispose
został wezwany zgodnie z oczekiwaniami.
Nie jestem pewien, czy jest to błąd, czy nie, ale bardzo nieoczekiwany.
class Service implements OnDestroy
? A jak myślisz, kiedy to się nazywa, jeśli usługa jest świadczona na poziomie modułu