Проблема
После обновления нашего приложения Angular до версии 8 (включая Angular CLI) URL-адреса больше не имеют префикса базового href, предоставленного в файле angular.json
, что существенно ломает наше приложение.
Предыдущее желаемое поведение
При локальном обслуживании французской версии приложения открытие веб-страницы на localhost:8000
будет перенаправлять меня на localhost:8000/fr
, и каждый URL-адрес, на который я могу перейти из приложения, также будет иметь префикс /fr/
.
Новое ошибочное поведение
При локальном обслуживании французской версии приложения открытие веб-страницы на localhost:8000
приводит к пустой странице с надписью Cannot GET /
, поскольку /fr
отсутствует. Когда я сразу открываю страницу в localhost:8000/fr
, я вижу страницу входа, но, поскольку в нашем процессе входа участвует третья сторона, когда я возвращаюсь в наше приложение от указанной третьей стороны, я вижу только пустую страницу с надписью Cannot GET /login
(потому что /fr/
пропал, отсутствует).
Что я пробовал до сих пор (неполный список, но два наиболее многообещающих подхода)
- Предоставление токена
APP_BASE_HREF
DI внутри провайдеровAppModule
, которые будут использоватьLOCALE_ID
в качестве значения, и удаление настроекbaseHref
из конфигурацииangular.json
. Это работает «несколько» в том смысле, что меня перенаправляют сlocalhost:8000
, например, наlocalhost:8000/fr/
, но это также приводит к нежелательным перенаправлениям, потому что я предполагаю, что логика поиска маршрута происходит до того, как будет введен базовый токен href, и поэтому он не может распознать URL-адрес и перенаправляет на маршрут по умолчанию. - Предоставление значения
deployUrl
внутри конфигурацииangular.json
безрезультатно.
Похожие проблемы
https://github.com/angular/angular-cli/issues/14925 по сути та же проблема. К сожалению, все такие проблемы были закрыты без предоставления фактического решения о том, как восстановить старое поведение.
angular.json
. - person tuomasi   schedule 05.12.2019