Как извлечь базовый 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
)
Спасибо за прочтение :)