Фабрика не возвращает значение от поставщика после углового обновления

#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, но нет идей, как ее исправить.


Кроме того, если это важно:

  1. Я использую ngx-translate 13.0.0
  2. В сервисах и каналах я получаю следующий параметр:
 constructor(@Inject(LOCALE_ID) private locale: string)
 
  1. Также TranslateService не определен в классе AppModule, хотя в других местах приложения после загрузки он доступен

РЕШЕНО: Вопрос был решен, помог перенос провайдера из app.модуля в app.компонент

Комментарии:

1. Если вы решили свою проблему, вы можете ответить самостоятельно и принять ее, чтобы поделиться тем, как вы ее устраняете.

2. Пожалуйста, опубликуйте ответ, чтобы мы могли сказать, что проблема решена без необходимости загружать страницу. Спасибо. Рад, что ты с этим разобрался.