Using ngOnDestroy in base classes of components is very unsafe. You should remember in all components that component can't use ngOnDestroy, because method will be overrided and then subscriptions will not be detached. Subscriptions should be destroyed in parents component, not base class. Second solution is programming in SOLID way - create service which is responsible for special behavior, and this service should be with destroy(): void public method. Then in parent component in ngOnDestroy you will use this method to destroy subscriptions in that method. Third solution is use second solution with services provided in Components. This is letting us to use ngOnDestroy in that services, so we don't need to share destroy() method and just implement ngOnDestroy in that services.