diff --git a/packages/core/rxjs-interop/src/output_to_observable.ts b/packages/core/rxjs-interop/src/output_to_observable.ts index 9512020ca69..0a20df21776 100644 --- a/packages/core/rxjs-interop/src/output_to_observable.ts +++ b/packages/core/rxjs-interop/src/output_to_observable.ts @@ -24,9 +24,12 @@ export function outputToObservable(ref: OutputRef): Observable { // Complete the observable upon directive/component destroy. // Note: May be `undefined` if an `EventEmitter` is declared outside // of an injection context. - destroyRef?.onDestroy(() => observer.complete()); + const unregisterOnDestroy = destroyRef?.onDestroy(() => observer.complete()); const subscription = ref.subscribe((v) => observer.next(v)); - return () => subscription.unsubscribe(); + return () => { + subscription.unsubscribe(); + unregisterOnDestroy?.(); + }; }); }