Как извлечь базовый HREF в Angular?

Используя стратегию местоположения, можно получить базовый HREF, переданный в команде ng build.

Оказывается, есть токен инъекции APP_BASE_HREF, поставляемый из коробки с Angular, но если вы попытаетесь ввести его:

Вы получаете сообщение об ошибке, утверждающее, что это никто не предоставил!

NullInjectorError: нет поставщика для InjectionToken appBaseHref!

При создании приложения мы можем указать для него базовый HREF:

Например: ng build --base-href /admin создаст наше приложение и проинструктирует его использовать базовый HREF из /admin. Это может быть полезно, если административная часть приложения представляет собой отдельно развернутое приложение в том же домене, что и наше основное приложение.

Чтобы использовать это в логике нашего приложения, мы можем:

Это оно, используйте его, если вам это нужно.
Отказ от ответственности: не будет работать, если вы используете HashLocationStrategy!

Если вам интересно, откуда это взялось, вот пара ссылок на исходный код Angular:
Этот метод PlatformLocation мы использованный выше. Которая, в свою очередь, использует метод из BrowserDomAdapter.

В нашем случае нам пришлось обрезать последнюю косую черту в случае, если был предоставлен базовый HREF /my/ (он нарушил SvgCacheService, который мы используем из ng-inline-svg)

Спасибо за прочтение :)