|
1 | 1 | import { isPlatformServer } from '@angular/common'; |
2 | | -import { Inject, Injectable, InjectionToken, NgZone, Optional, PLATFORM_ID, inject } from '@angular/core'; |
| 2 | +import { EnvironmentInjector, Inject, Injectable, InjectionToken, NgZone, Optional, PLATFORM_ID, inject, runInInjectionContext } from '@angular/core'; |
3 | 3 | import { ɵAngularFireSchedulers } from '@angular/fire'; |
4 | 4 | import { AppCheckInstances } from '@angular/fire/app-check'; |
5 | 5 | import { FIREBASE_APP_NAME, FIREBASE_OPTIONS, ɵcacheInstance, ɵfirebaseAppFactory } from '@angular/fire/compat'; |
@@ -121,6 +121,7 @@ export function associateQuery<T>(collectionRef: CollectionReference<T>, queryFn |
121 | 121 | export class AngularFirestore { |
122 | 122 | public readonly firestore: firebase.firestore.Firestore; |
123 | 123 | public readonly persistenceEnabled$: Observable<boolean>; |
| 124 | + private readonly injector = inject(EnvironmentInjector); |
124 | 125 |
|
125 | 126 | /** |
126 | 127 | * Each Feature of AngularFire has a FirebaseApp injected. This way we |
@@ -197,7 +198,7 @@ export class AngularFirestore { |
197 | 198 | collectionRef = pathOrRef; |
198 | 199 | } |
199 | 200 | const { ref, query } = associateQuery<T>(collectionRef, queryFn); |
200 | | - const refInZone = inject(NgZone).run(() => ref); |
| 201 | + const refInZone = runInInjectionContext(this.injector, () => inject(NgZone).run(() => ref)); |
201 | 202 | return new AngularFirestoreCollection<T>(refInZone, query, this); |
202 | 203 | } |
203 | 204 |
|
@@ -227,7 +228,7 @@ export class AngularFirestore { |
227 | 228 | } else { |
228 | 229 | ref = pathOrRef; |
229 | 230 | } |
230 | | - const refInZone = inject(NgZone).run(() => ref); |
| 231 | + const refInZone = runInInjectionContext(this.injector, () => inject(NgZone).run(() => ref)); |
231 | 232 | return new AngularFirestoreDocument<T>(refInZone, this); |
232 | 233 | } |
233 | 234 |
|
|
0 commit comments