feat: ConfigService implementiert und Konfiguration mit useFactory geladen

This commit is contained in:
Developer 02 2024-07-23 10:10:59 +02:00
parent f329340c7f
commit f502a47090
6 changed files with 46 additions and 2 deletions

View File

@ -6,6 +6,8 @@ import { provideAnimationsAsync } from '@angular/platform-browser/animations/asy
import { provideHttpClient, withFetch } from '@angular/common/http';
import { APP_BASE_HREF } from '@angular/common';
import { UrlService } from './services/url.service';
import { CONFIG } from './tokens';
import { ConfigService } from './services/config.service';
export const appConfig: ApplicationConfig = {
providers: [
@ -17,6 +19,11 @@ export const appConfig: ApplicationConfig = {
provide: APP_BASE_HREF,
useFactory: (urlService: UrlService) => urlService.getBaseHref(),
deps: [UrlService]
},
{
provide: CONFIG,
useFactory: async(configService: ConfigService) => await configService.getConfig(),
deps: [ConfigService]
}
]
};

View File

@ -0,0 +1,16 @@
import { TestBed } from '@angular/core/testing';
import { ConfigService } from './config.service';
describe('ConfigService', () => {
let service: ConfigService;
beforeEach(() => {
TestBed.configureTestingModule({});
service = TestBed.inject(ConfigService);
});
it('should be created', () => {
expect(service).toBeTruthy();
});
});

View File

@ -0,0 +1,15 @@
import { HttpClient } from '@angular/common/http';
import { Injectable } from '@angular/core';
import { firstValueFrom } from 'rxjs/internal/firstValueFrom';
import { env } from '../../environments/environment';
@Injectable({
providedIn: 'root'
})
export class ConfigService {
constructor(private http: HttpClient) { }
async getConfig(): Promise<any> {
return await firstValueFrom(this.http.get(env.config_url));
}
}

View File

@ -1 +1,3 @@
import { InjectionToken } from '@angular/core';
export const CONFIG = new InjectionToken<string>('CONFIG');

View File

@ -0,0 +1,3 @@
{
"apiUrl": "/api"
}

View File

@ -115,5 +115,6 @@ export const env = {
field: (ur: any) => ur.repUser?.username
},
]
}
},
config_url: "/assets/config.json"
};