angularfire icon indicating copy to clipboard operation
angularfire copied to clipboard

Lazy-load the Firestore with standalone components

Open ghidoz opened this issue 1 year ago • 3 comments

Hi, is there a way to lazy-load the Firestore?

I'm using it only in a lazy-loaded component, so I would like to avoid providing it in the app config with provideFirestore(() => getFirestore())

I followed this example: https://github.com/angular/angularfire/blob/main/samples/advanced/src/app/firestore/firestore.component.ts

I have a get-firestore.ts with this content:

import { getFirestore } from '@angular/fire/firestore';
export const firestore = getFirestore();

and I try to lazy-load it like this:

constructor() {
  this.initFirestore();
}

private async initFirestore() {
  const { firestore } = await import('./get-firestore');
  this.firestore = firestore;
}

But I get this error at run-time:

Error: Either AngularFireModule has not been provided in your AppModule (this can be done manually or implictly using
provideFirebaseApp) or you're calling an AngularFire method outside of an NgModule (which is not supported).

Even if I add the AngularFireModule to the component's imports, it doesn't change.

So, what's the right way to lazy-load the FIrestore, with standalone components?

Version info

Angular: 19.0.0

Firebase: 10.12.0

AngularFire: 18.0.1

ghidoz avatar Nov 27 '24 17:11 ghidoz

This issue does not seem to follow the issue template. Make sure you provide all the required information.

google-oss-bot avatar Nov 27 '24 17:11 google-oss-bot

Good news! AngularFire v19 (currently in release candidate) now natively supports code-splitting via @defer. See our new sample app to see it in action. I'll leave this open until we release final and get around to documenting this.

jamesdaniels avatar Dec 14 '24 03:12 jamesdaniels

That's great news! Looking forward to using it!

ghidoz avatar Dec 15 '24 17:12 ghidoz