refactor: UrlService auf Lazy Loading umgestellt
This commit is contained in:
parent
f502a47090
commit
b880a3245d
@ -1,4 +1,4 @@
|
|||||||
import { ApplicationConfig } from '@angular/core';
|
import { APP_INITIALIZER, ApplicationConfig } from '@angular/core';
|
||||||
import { provideRouter } from '@angular/router';
|
import { provideRouter } from '@angular/router';
|
||||||
import { routes } from './app.routes';
|
import { routes } from './app.routes';
|
||||||
import { provideClientHydration } from '@angular/platform-browser';
|
import { provideClientHydration } from '@angular/platform-browser';
|
||||||
@ -6,8 +6,7 @@ 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 { API_URL } from './tokens';
|
||||||
import { ConfigService } from './services/config.service';
|
|
||||||
|
|
||||||
export const appConfig: ApplicationConfig = {
|
export const appConfig: ApplicationConfig = {
|
||||||
providers: [
|
providers: [
|
||||||
@ -19,11 +18,16 @@ 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: API_URL,
|
||||||
|
useFactory: (urlService: UrlService) => urlService.getApiUrl(),
|
||||||
|
deps: [UrlService]
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
provide: CONFIG,
|
provide: API_URL,
|
||||||
useFactory: async(configService: ConfigService) => await configService.getConfig(),
|
useFactory: (urlService: UrlService) => urlService.getApiUrl(),
|
||||||
deps: [ConfigService]
|
deps: [UrlService]
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
};
|
};
|
||||||
@ -7,21 +7,30 @@ import { env } from '../../environments/environment';
|
|||||||
providedIn: 'root'
|
providedIn: 'root'
|
||||||
})
|
})
|
||||||
export class UrlService {
|
export class UrlService {
|
||||||
document: Document;
|
|
||||||
meta: Meta;
|
|
||||||
|
|
||||||
constructor() {
|
private loaded:boolean = false;
|
||||||
this.document = inject(DOCUMENT)
|
private base_href: any;
|
||||||
this.meta = inject(Meta)
|
private api_url: any;
|
||||||
}
|
|
||||||
|
constructor(@Inject(DOCUMENT) private document: Document, @Inject(Meta) private meta: Meta) {}
|
||||||
|
|
||||||
|
private lazyLoad(){
|
||||||
|
if(this.loaded)
|
||||||
|
return;
|
||||||
|
|
||||||
|
this.base_href = this.document!.querySelector('base')?.getAttribute('href') || '/';
|
||||||
|
this.api_url = (this.meta!.getTag('name="api-url"')?.content ?? env.default_api_url);
|
||||||
|
this.loaded = true;
|
||||||
|
}
|
||||||
|
|
||||||
getBaseHref(): string {
|
getBaseHref(): string {
|
||||||
const baseElement = this.document.querySelector('base');
|
this.lazyLoad()
|
||||||
return baseElement?.getAttribute('href') || '/';
|
return this.base_href;
|
||||||
}
|
}
|
||||||
|
|
||||||
getApiUrl(route: string = ""): string {
|
getApiUrl(route: string = ""): string {
|
||||||
return env.api_url + route;
|
this.lazyLoad()
|
||||||
|
return this.api_url + route;
|
||||||
}
|
}
|
||||||
|
|
||||||
readonly apiRoute = {
|
readonly apiRoute = {
|
||||||
|
|||||||
@ -1,3 +1,3 @@
|
|||||||
import { InjectionToken } from '@angular/core';
|
import { InjectionToken } from '@angular/core';
|
||||||
|
|
||||||
export const CONFIG = new InjectionToken<string>('CONFIG');
|
export const API_URL = new InjectionToken<string>('API_URL');
|
||||||
@ -1,6 +1,6 @@
|
|||||||
export const env = {
|
export const env = {
|
||||||
production: false,
|
production: false,
|
||||||
api_url: "/api",
|
default_api_url: "/api",
|
||||||
routes: {
|
routes: {
|
||||||
user: "/user",
|
user: "/user",
|
||||||
group: "/group",
|
group: "/group",
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user