feat: ConfigService implementiert und Konfiguration mit useFactory geladen
This commit is contained in:
parent
f329340c7f
commit
f502a47090
@ -6,6 +6,8 @@ import { provideAnimationsAsync } from '@angular/platform-browser/animations/asy
|
|||||||
import { provideHttpClient, withFetch } from '@angular/common/http';
|
import { provideHttpClient, withFetch } from '@angular/common/http';
|
||||||
import { APP_BASE_HREF } from '@angular/common';
|
import { APP_BASE_HREF } from '@angular/common';
|
||||||
import { UrlService } from './services/url.service';
|
import { UrlService } from './services/url.service';
|
||||||
|
import { CONFIG } from './tokens';
|
||||||
|
import { ConfigService } from './services/config.service';
|
||||||
|
|
||||||
export const appConfig: ApplicationConfig = {
|
export const appConfig: ApplicationConfig = {
|
||||||
providers: [
|
providers: [
|
||||||
@ -17,6 +19,11 @@ export const appConfig: ApplicationConfig = {
|
|||||||
provide: APP_BASE_HREF,
|
provide: APP_BASE_HREF,
|
||||||
useFactory: (urlService: UrlService) => urlService.getBaseHref(),
|
useFactory: (urlService: UrlService) => urlService.getBaseHref(),
|
||||||
deps: [UrlService]
|
deps: [UrlService]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
provide: CONFIG,
|
||||||
|
useFactory: async(configService: ConfigService) => await configService.getConfig(),
|
||||||
|
deps: [ConfigService]
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
};
|
};
|
||||||
@ -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();
|
||||||
|
});
|
||||||
|
});
|
||||||
@ -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));
|
||||||
|
}
|
||||||
|
}
|
||||||
@ -1 +1,3 @@
|
|||||||
import { InjectionToken } from '@angular/core';
|
import { InjectionToken } from '@angular/core';
|
||||||
|
|
||||||
|
export const CONFIG = new InjectionToken<string>('CONFIG');
|
||||||
@ -0,0 +1,3 @@
|
|||||||
|
{
|
||||||
|
"apiUrl": "/api"
|
||||||
|
}
|
||||||
@ -115,5 +115,6 @@ export const env = {
|
|||||||
field: (ur: any) => ur.repUser?.username
|
field: (ur: any) => ur.repUser?.username
|
||||||
},
|
},
|
||||||
]
|
]
|
||||||
}
|
},
|
||||||
|
config_url: "/assets/config.json"
|
||||||
};
|
};
|
||||||
Loading…
x
Reference in New Issue
Block a user