This error occurs when you attempt to retrieve a service from an injector that has already been destroyed. This typically happens when code tries to access dependencies after a component, directive, or module has been destroyed.
Common scenarios
Accessing services in callbacks after destruction
When a component is destroyed, its injector is also destroyed. If an async callback later tries to access services, this error occurs:
@Component({
/*...*/
})
export class UserProfile implements OnInit {
private userClient = inject(UserClient);
ngOnInit() {
setTimeout(() => {
// ERROR: If component was destroyed before timeout fires,
// the injector is no longer available
this.userClient.fetchData();
}, 5000);
}
}
Accessing services after unsubscribing
Similar issues occur with observables if cleanup happens in the wrong order:
@Component({
/*...*/
})
export class DataView implements OnDestroy {
private dataStore = inject(DataStore);
ngOnDestroy() {
// Problematic: attempting to use the injector during destruction
// after other cleanup may have occurred
this.dataStore.cleanup();
}
}
Debugging the error
To fix this error:
Check async operations — Ensure callbacks, promises, and subscriptions are cancelled when the component is destroyed. Use
takeUntilDestroyed()orDestroyReffor cleanup.Capture dependencies early — Store references to services in class fields rather than accessing the injector in callbacks.
Guard against destroyed state — For operations that might outlive the component, check if the component is still active before accessing services.
@Component({
/*...*/
})
export class UserProfile implements OnInit {
private destroyRef = inject(DestroyRef);
private userClient = inject(UserClient);
ngOnInit() {
// Use takeUntilDestroyed to automatically cancel when destroyed
interval(5000)
.pipe(takeUntilDestroyed(this.destroyRef))
.subscribe(() => {
this.userClient.fetchData();
});
}
}
The stack trace indicates where the destroyed injector was accessed. Work backwards to identify the async operation that outlived its component.