Skip to content
Snippets Groups Projects

add overriding environment

8 files
+ 52
8
Compare changes
  • Side-by-side
  • Inline

Files

+ 32
0
import { APP_INITIALIZER, InjectionToken, Provider } from "@angular/core";
import { lastValueFrom, map, ReplaySubject } from "rxjs";
import { merge } from "lodash";
import {HttpClient} from '@angular/common/http';
import { environment } from "src/environments/environment";
import { Environment } from "src/environments/environment.model";
export const ENVIRONMENT = new InjectionToken('env');
const environmentSubject = new ReplaySubject<Environment>(1);
const environment$ = environmentSubject.asObservable();
export const ENVIRONMENT_INITIALIZER: Provider[] = [
{
provide: APP_INITIALIZER,
useFactory: environmentInitializer,
multi: true,
deps: [HttpClient],
},
{ provide: ENVIRONMENT, useValue: environment$ },
];
export function environmentInitializer(
http: HttpClient
): () => Promise<Environment> {
return () => {
let res = http
.get<Environment>('/assets/environment.json')
.pipe(map(e => merge(environment, e)));
res.subscribe(environmentSubject);
return lastValueFrom(res);
};
}
\ No newline at end of file
Loading