Я использую Compiler из "@angular/core" для создания компонентов на лету. Обычная сборка отрабатывает нормально, приложение работает без проблем.
Но, когда я делаю сборку с флагом
--prod, это включает в себя следующие опции сборки:
"optimization": true,
"outputHashing": "none",
"sourceMap": false,
"extractCss": true,
"namedChunks": false,
"aot": true,
"extractLicenses": true,
"vendorChunk": false,
"buildOptimizer": true,
"serviceWorker": true
После этого когда происходит вызов метода
createCompiler() падает ошибка:
undefined is not iterable (cannot read property Symbol(Symbol.iterator))
Вот как выглядит мой модуль в котором создается компилятор:
export function createJitCompiler() {
return new JitCompilerFactory().createCompiler([{useJit: true}]);
}
@NgModule({
imports: [
CommonModule
],
exports: [
DynamicComponent
],
declarations: [
DynamicComponent
]
})
export class DynamicLoaderModule {
static forRoot(): ModuleWithProviders {
return {
ngModule: DynamicLoaderModule,
providers: [
{provide: Compiler, useFactory: createJitCompiler},
{provide: NgModuleFactoryLoader, useClass: ModuleLoader}
]
}
}
}
Я читал
в этой статье о том что если использовать AOT-сборку, то компилятор будет не доступен во время выполнения приложения. И там же пишут что для решения данной проблемы можно создать отдельный модуль с сервисом, куда нужно будет вручную добавить компилятор.
Я сделал как там написано, но все равно проблема актуальна. Версия Angular 7.0.1.
Кто нибудь решал подобные задачи? Либо я что-то упустил?