Forem

Cover image for Using Observable in APP_INITIALIZER
Dzhavat Ushev for This is Angular

Posted on β€’ Originally published at dzhavat.github.io

7 2

Using Observable in APP_INITIALIZER

An exciting new feature is coming to Angular v12 - support for Observables in APP_INITIALIZER πŸŽ‰

Note: This feature was added in v12.0.0-next.2.

Up until now, if you wanted to execute something asynchronous as part of APP_INITIALIZER, say an HTTP request to get some configuration, your only option was to convert it to a Promise. Often times using toPromise() (which, btw, is deprecated in the upcoming RxJS v7).

This is no more! In v12 you will be able to directly return an Observable. Let’s see how:

import { APP_INITIALIZER, FactoryProvider } from '@angular/core';
import { ConfigService } from "./config.service";

function loadConfigFactory(configService: ConfigService) {
  // Easy as pie πŸ₯§
  return () => configService.getConfig(); // πŸ‘ˆ

  // How you might've done it β€œbefore”
  // return () => configService.getConfig().toPromise();
}

export const loadConfigProvider: FactoryProvider = {
  provide: APP_INITIALIZER,
  useFactory: loadConfigFactory,
  deps: [ConfigService],
  multi: true
};
Enter fullscreen mode Exit fullscreen mode

An important thing to note is that the Observable must complete, otherwise the bootstrap process will not continue.

Now, place the loadConfigProvider variable in the providers array of a Module and everything should be working fine. Check out this Stackblitz to see it in action.

Oh, and don’t forget to add error handling to that request. 😎

Thanks to Yadong Xie for this wonderful contribution.


Photo by Katerina Pavlyuchkova on Unsplash

Please leave your appreciation by commenting on this post!

Everybody is welcome

Top comments (0)

πŸ‘‹ Kindness is contagious

Dive into an ocean of knowledge with this thought-provoking post, revered deeply within the supportive DEV Community. Developers of all levels are welcome to join and enhance our collective intelligence.

Saying a simple "thank you" can brighten someone's day. Share your gratitude in the comments below!

On DEV, sharing ideas eases our path and fortifies our community connections. Found this helpful? Sending a quick thanks to the author can be profoundly valued.

Okay