Estoy aplicando SSR a un proyecto Angular preexistente. En la implementación anterior de CSR de representación del lado del cliente, usé la window de variable global para manejar ENV VARS para una compilación: múltiples implementaciones con fines de CI/CD siguiendo este artículo .
Intenté usar un servicio personalizado para pasar las variables env vars a app.modules.ts usando APP_INITIALIZER sin éxito porque el uso del entorno con forRoot() se llamará mucho antes que mi servicio. Además, webpack no puede ayudar en esta situación debido a una compilación: requisito de múltiples implementaciones.
Como en el ejemplo a continuación, traté de inyectar EnvironmentService en un módulo, pero parece que los datos aún no se han obtenido del archivo como se menciona en el artículo anterior.
import { EnvironmentService } from './environments/EnvironmentService'; let envService: EnvironmentService; @NgModule({ declarations: [...], imports: [ServerLogModule.forRoot(envService.ENV_VARS)], providers: [...] }) export class AppModule {}• No será posible pasar una variable de entorno al método forRoot() desde otro servicio en los proveedores de app.modules.ts ya que no podrá recuperar ningún dato antes de que se llame al método.
Para que esto funcione, es mejor usar webpack para crear en el momento de la compilación un archivo environment.ts con los datos correctos y usarlo en app.modules.ts , esto puede ayudar
• El artículo mencionado en su pregunta, como dijo, funcionaría muy bien para una situación de representación del lado del cliente, pero usar el mismo enfoque para SSR puede requerir muchos cambios para algunas o muchas opciones arquitectónicas que ya haya realizado.