Carlos Cifuentes
Referencia AngularJS → Angular

module.config() / module.run() en Angular moderno

Los bloques config y run pasan a ser entradas del arreglo providers en app.config.ts. La configuración se pasa a las funciones provide, y el código de arranque va en provideAppInitializer.

Antes · AngularJS
angular.module('app')
  .config(function ($httpProvider, $locationProvider) {
    $locationProvider.html5Mode(true);
    $httpProvider.interceptors.push('authInterceptor');
  })
  .run(function (SessionService) {
    SessionService.restore();
  });
Después · Angular
// app.config.ts
export const appConfig: ApplicationConfig = {
  providers: [
    provideRouter(routes),
    provideHttpClient(withInterceptors([authInterceptor])),
    provideAppInitializer(() => inject(SessionService).restore()),
  ],
};

// main.ts
bootstrapApplication(AppComponent, appConfig);

Qué cambia

  • La configuración de providers ($httpProvider, $locationProvider) pasa a ser opciones de las funciones provide, como withInterceptors() o withHashLocation().
  • Un bloque run pasa a ser provideAppInitializer (Angular 19 en adelante; antes, el token APP_INITIALIZER), que puede usar inject().
  • Si el inicializador devuelve una promesa o un observable, Angular lo espera antes de renderizar. Un bloque run no podía esperar.

Consejo de migración. Lee cada bloque run línea por línea antes de migrar. Con los años acumulan cosas sin relación (restaurar sesión, analítica, listeners de $rootScope), y cada una va en un lugar distinto: un inicializador, un guard o un servicio.

Relacionado

¿Planeas una migración o una plataforma de microfrontends?

En una llamada de 20 minutos me cuentas tu situación y te digo cómo la abordaría. Si todavía no vale la pena, también te lo digo.

Escríbeme por LinkedIn