Я использую загрузчик ngx-перевод-мульти-http-загрузчик для создания определенных переводов. Документация требует, чтобы эта фабрика была создана в app.module.ts:
export function multiTranslateHttpLoaderFactory(http: HttpClient) {
return new MultiTranslateHttpLoader(http, [
{prefix: './assets/i18n/default/', suffix: '.json'},
{prefix: './assets/i18n/bc/', suffix: '.json'}
]);
}
Эта фабрика настраивается внутри массивов импорта следующим образом:
TranslateModule.forRoot({
loader: {
provide: TranslateLoader,
useFactory: multiTranslateHttpLoaderFactory,
deps: [HttpClient]
}
}),
Мне нужен способ поместить фабрику в мой app.component.ts, потому что мне все еще нужно запрограммировать некоторую логику, и я не хочу делать это в моем app.module.ts.
Но если я перемещу метод в свой app.component.ts и сделаю все необходимые операторы импорта поверх файла, angular не скомпилируется и вернет это сообщение об ошибке:
ERROR in src / app / app.module.ts (55,21): error TS2304: Can not find name 'multiTranslateHttpLoaderFactory'.
Есть ли возможность или мне действительно нужно определить фабрику в app.module.ts???
Хм, я просто не знаю, что вы имеете в виду. Я хочу переместить фабрику в app.component.ts, поэтому мой AppModule пуст.
не могли бы вы обновить вопрос с кодом, который вы используете в настоящее время? (с заводом в app.component.ts и как вы используете его в своем модуле)



![Безумие обратных вызовов в javascript [JS]](https://i.imgur.com/WsjO6zJb.png)


На самом деле не должно иметь значения, где вы определяете свою фабрику или любую другую функцию в этом отношении. Просто убедитесь, что импортировали его правильно, где-то в верхней части app.module.ts
import {multiTranslateHttpLoaderFactory} from 'path/to/your/component'
Правда об импорте я не подумал. Меня просто удивило, что он был помещен в AppModule как экспортируемая функция. Я попробую это завтра. Спасибо.
К сожалению, это не работает. Я только что заметил, что я не могу использовать функцию как экспортированную функцию, но должен вызывать в своем классе AppComponent, поэтому у меня есть доступ к моим службам. Есть ли возможность для этого?
вы можете внедрить сервисы в фабричную функцию. нет необходимости создавать экземпляр целого компонента. что в любом случае приведет к проблемам, потому что компоненты не предназначены для такого использования. Если вы покажете нам свой код, включая все необходимые вам услуги, мы сможем лучше вам помочь :)
будет ли ваш фабричный метод в файле
app.component.tsили даже в компоненте?