BaseHrefService hinzugefügt, um das Basis-href vom Dokument-Basis-Element abzurufen.

This commit is contained in:
Developer 02
2024-06-14 10:52:54 +02:00
parent 30ee71eaf5
commit 963a36acfa
5 changed files with 52 additions and 15 deletions

View File

@@ -4,7 +4,18 @@ import { provideRouter } from '@angular/router';
import { routes } from './app.routes';
import { provideClientHydration } from '@angular/platform-browser';
import { provideAnimationsAsync } from '@angular/platform-browser/animations/async';
import { APP_BASE_HREF } from '@angular/common';
import { BaseHrefService } from './services/base-href.service';
export const appConfig: ApplicationConfig = {
providers: [provideRouter(routes), provideClientHydration(), provideAnimationsAsync()]
providers: [
provideRouter(routes),
provideClientHydration(),
provideAnimationsAsync(),
{
provide: APP_BASE_HREF,
useFactory: (baseHrefService: BaseHrefService) => baseHrefService.getBaseHref(),
deps: [BaseHrefService]
}
]
};

View File

@@ -2,16 +2,8 @@
import { NgModule } from '@angular/core';
import { RouterModule, Routes } from '@angular/router';
import { LoginComponent } from './login/login.component';
import { FooComponent } from './foo/foo.component';
import { authGuard } from './guards/auth.guard';
export const routes: Routes = [
{ path: 'login', component: LoginComponent },
{ path: 'foo', component: FooComponent }
];
@NgModule({
imports: [RouterModule.forRoot(routes)],
exports: [RouterModule]
})
export class AppRoutingModule {}
{ path: 'login', component: LoginComponent }
];

View File

@@ -11,18 +11,18 @@ export class AuthService {
constructor(private http: HttpClient) {
const baseHref = inject(APP_BASE_HREF);
this.baseUrl = `${baseHref}api/auth`;
this.baseUrl = `${baseHref}auth`;
}
login(credentials: { username: string; password: string }): Observable<any> {
return this.http.post(`${this.baseUrl}api/login`, credentials);
return this.http.post(`${this.baseUrl}login`, credentials);
}
logout(): Observable<any> {
return this.http.post(`${this.baseUrl}api/logout`, {});
return this.http.post(`${this.baseUrl}logout`, {});
}
isAuthenticated(): Observable<boolean> {
return this.http.get<boolean>(`${this.baseUrl}api/check`);
return this.http.get<boolean>(`${this.baseUrl}check`);
}
}

View File

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

View File

@@ -0,0 +1,18 @@
// base-href.service.ts
import { Injectable, Inject, inject } from '@angular/core';
import { DOCUMENT } from '@angular/common';
@Injectable({
providedIn: 'root'
})
export class BaseHrefService {
document: Document;
constructor() {
this.document = inject(DOCUMENT)
}
getBaseHref(): string {
const baseElement = this.document.querySelector('base');
return baseElement?.getAttribute('href') || '/';
}
}