main.ts
-------
loadEnvironment(environment.environmentUrl)
    .then(env => {
        if (env.production) {
            enableProdMode();
        }
        bootstrap();
    });


load-environment.ts
-------------------
export function loadEnvironment(url: string): Promise<any> {
    return fetch(url)
        .then(response => response.json())
        .then(env => {
            window['__env__'] = env;
            return env;
        });
}
  
  
environment-factory.ts
----------------------
export function getEnvironmentFactory(): any {
    return window['__env__'];
}
  
  
environment.module.ts
---------------------
export const ENVIRONMENT_CONFIG = new InjectionToken('environmentConfig');

@NgModule({
    providers: [
        {
            provide: ENVIRONMENT_CONFIG,
            useFactory: getEnvironmentFactory
        }
    ]
})
export class EnvironmentModule {
}