#angular #factory #angular12 #angular-providers #angular-upgrade
Вопрос:
В приложении.модуль.у ts есть следующий поставщик:
{
provide: LOCALE_ID,
useFactory: (translate: TranslateService) => translate.currentLang,
deps: [TranslateService]
}
Я обновил угловую версию с 8.2 (итеративно до 12).
Все работало в версии 8.2, но теперь неопределенное всегда записывается в LOCALE_ID.
Но если я изменю код на:
{
provide: LOCALE_ID,
useValue: 'en'
}
Тогда все работает, отсюда я делаю вывод, что проблема в useFactory, но нет идей, как ее исправить.
Кроме того, если это важно:
- Я использую ngx-translate 13.0.0
- В сервисах и каналах я получаю следующий параметр:
constructor(@Inject(LOCALE_ID) private locale: string)
- Также TranslateService не определен в классе AppModule, хотя в других местах приложения после загрузки он доступен
РЕШЕНО: Вопрос был решен, помог перенос провайдера из app.модуля в app.компонент
Комментарии:
1. Если вы решили свою проблему, вы можете ответить самостоятельно и принять ее, чтобы поделиться тем, как вы ее устраняете.
2. Пожалуйста, опубликуйте ответ, чтобы мы могли сказать, что проблема решена без необходимости загружать страницу. Спасибо. Рад, что ты с этим разобрался.