34 lines
875 B
TypeScript
34 lines
875 B
TypeScript
import { inject, InjectionToken } from '@angular/core';
|
|
import { PlatformLocation } from '@angular/common';
|
|
|
|
export const BASE_HREF = new InjectionToken<string>('BASE_HREF', {
|
|
factory: () => {
|
|
const baseUrl = inject(PlatformLocation).getBaseHrefFromDOM();
|
|
if (!baseUrl) {
|
|
return '';
|
|
}
|
|
|
|
if (baseUrl[baseUrl.length - 1] === '/') {
|
|
return baseUrl.substring(0, baseUrl.length - 1);
|
|
}
|
|
|
|
return baseUrl;
|
|
},
|
|
});
|
|
|
|
export type BaseHrefFn = (path: string) => string;
|
|
|
|
export const BASE_HREF_FN = new InjectionToken<BaseHrefFn>('Convert path function', {
|
|
factory: () => {
|
|
const baseUrl = inject(BASE_HREF);
|
|
|
|
return (path: string) => {
|
|
if (path[0] === '/') {
|
|
return baseUrl + path;
|
|
}
|
|
|
|
return baseUrl + '/' + path;
|
|
};
|
|
},
|
|
});
|