From a512563f4e53458e2f649030c6d2f4c73b4d6aa1 Mon Sep 17 00:00:00 2001 From: gbubemismith Date: Wed, 23 Aug 2023 18:00:30 -0400 Subject: [PATCH] Added function to run inside angular zone --- .../src/utils/run-inside-angular.operator.ts | 21 +++++++++++++++++++ 1 file changed, 21 insertions(+) create mode 100644 libs/angular/src/utils/run-inside-angular.operator.ts diff --git a/libs/angular/src/utils/run-inside-angular.operator.ts b/libs/angular/src/utils/run-inside-angular.operator.ts new file mode 100644 index 00000000000..4e9b52b009c --- /dev/null +++ b/libs/angular/src/utils/run-inside-angular.operator.ts @@ -0,0 +1,21 @@ +import { NgZone } from "@angular/core"; +import { MonoTypeOperatorFunction, Observable } from "rxjs"; + +export function runInsideAngular(ngZone: NgZone): MonoTypeOperatorFunction { + return (source: Observable) => + new Observable((subscriber) => { + const subscription = source.subscribe({ + next(value) { + ngZone.run(() => subscriber.next(value)); + }, + error(error: unknown) { + ngZone.run(() => subscriber.error(error)); + }, + complete() { + ngZone.run(() => subscriber.complete()); + }, + }); + + return () => subscription.unsubscribe(); + }); +}