недавно я обнаружил, что пишу для каждого создаваемого Angular приложения один и тот же метод init_app внутри AppLoadingModule. Поэтому я решил написать библиотеку со всеми общими вещами между моими проектами. Я хочу переместить эту функцию init_app в библиотеку.
Позвольте мне объяснить лучше: в моей библиотеке есть служба, которая загружает файл конфигурации из папки assets. На данный момент в моем app-loading.module.ts для моего angular приложения у меня есть следующий код:
@NgModule({
imports: [],
providers: [
{ provide: APP_INITIALIZER, useFactory: init_app, multi: true, deps: [
ConfigurationService,
HttpClient
]}
]
})
export class AppLoadingModule {}
export function init_app(
configurationService: ConfigurationService,
http: HttpClient
): () => Promise<any> {
return (): Promise<any> => {
return new Promise((resolve, reject) => {
const env = environment.production ? 'production' : 'development';
console.log(`init_app:: ${env}`);
Promise.all([
configurationService.loadConfiguration(http, env)
])
.then(() => {
resolve();
})
.catch((err) => {
console.log(`Error fetching configuration: ${err}`);
// Try continue
resolve();
});
});
};
}
Есть ли способ переместить или вызвать эту функцию из библиотеки? Я пытался переместить весь app-loading.module.ts в основную библиотеку, но не могу сослаться на environment.ts.