В настоящее время я выполняю некоторую динамическую c настройку модуля в Angular. Пока все работает, но у меня проблемы с памятью в моем текущем методе.
В приведенном ниже примере я использую фабрику, чтобы создать конфигурацию и предоставить ее ModuleX
. Этот объект CONFIG
будет использоваться только один раз за время существования приложения - в этом примере для создания CONNECTION
для какой-либо другой удаленной службы. CONNECTION
будет интенсивно использоваться ModuleXService
в течение жизни. CONFIG
на другой стороне никогда не будет повторно использоваться.
Итак, мой вопрос: в настоящее время я полагаю, что этот объект будет жить в памяти в течение всего времени жизни моего Приложения? Создает ли это проблемы в огромных приложениях? Есть ли способ удалить / удалить CONFIG
после использования?
//moduleX.module.ts
const CONFIG = new InjectionToken<Config>('CONFIG');
const CONNECTION = new InjectionToken<Connection>('CONNECTION');
class ModuleXService {
constructor(@Inject(CONNECTION) private con: Connection) {}
}
export class ModuleX {
static forRoot(options: any): ModuleWithProviders {
return {
ngModule: ModuleX,
providers: [
{
provide: CONFIG,
useFactory: options.useFactory,
deps: options.deps
},
{
provide: CONNECTION,
useFactory: (conf: Config) => createConnection(conf),
deps: [CONFIG]
},
ModuleXService
]
};
}
}
//app.module.ts
@NgModule({
imports: [
ConfigModule,
ModuleX.forRoot({
useFactory: (conf: ConfigService) => conf.getSomeConfig(),
deps: [ConfigService]
})
]
})
export class AppModule {}