Angular: как импортировать JitCompilerFactory?

Если я использую компиляцию AOT, динамическая компиляция будет невозможна. Поэтому мне нужно загрузить компилятор в браузер. Так как мне его загрузить? Если я использую

import { JitCompilerFactory } from '@angular/compiler';

Однако после импорта JitCompilerFactory я получаю следующую ошибку:

«экспорт« JitCompilerFactory »не найден в« угловом / компиляторе

Так я прав, что теперь мне нужно импортировать его из 'angular/platform-browser-dynamic' для динамической компиляции?


person Dmitry Anikeychik    schedule 29.07.2018    source источник
comment
Помог ли этот ответ?   -  person Max Koretskyi    schedule 30.07.2018


Ответы (1)


Вам нужно импортировать JitCompilerFactory в ваш app.module.ts следующим образом:

import {Compiler, COMPILER_OPTIONS, CompilerFactory} from '@angular/core';
import {JitCompilerFactory} from '@angular/platform-browser-dynamic';
export function createCompiler(compilerFactory: CompilerFactory) {
  return compilerFactory.createCompiler();
}



@NgModule({
  declarations: [
    AppComponent,
  ],
  imports: [
    BrowserModule
  ],
  providers: [
    {provide: COMPILER_OPTIONS, useValue: {}, multi: true},
    {provide: CompilerFactory, useClass: JitCompilerFactory, deps: [COMPILER_OPTIONS]},
    {provide: Compiler, useFactory: createCompiler, deps: [CompilerFactory]}
  ],
  bootstrap: [AppComponent]
})
export class AppModule {}

Здесь я создал полностью работающую демонстрацию StackBlitz с динамическим компонентом, если вы хотите поиграть вокруг с ним на там.

person Narm    schedule 30.07.2018
comment
@angularindepth-com да, это помогло. - person Dmitry Anikeychik; 01.08.2018
comment
Спасибо за этот пример. Следует отметить, что core-js изменил пути импорта в 3.0.1. Мне пришлось добавить это в мой polyfills.ts: import 'core-js/es/reflect'; import 'core-js/stable/reflect'; import 'core-js/features/reflect';. - person k0nG; 16.04.2019
comment
@Narm Я пробую этот пример, но получаю сообщение об ошибке: ``` Ошибка ERROR: метаданные NgModule не найдены для «DynamicComponentModule». ``` Я думаю, что делаю это точно так же, как и вы, плюс я обновил зависимости в вашем примере, как в моем проекте, и он все еще работает для вас, но не для меня. Есть идеи, о чем еще я должен позаботиться? - person gencblakqori; 29.07.2019
comment
@Narm На самом деле, когда я запускаю ng serve --aot=true в вашем проекте, я получаю ту же ошибку. - person gencblakqori; 29.07.2019
comment
Привет @gencblakqori, раздел комментариев к этому вопросу не является правильным форумом для ответов на эти вопросы. Если вы создадите свой собственный вопрос со своей уникальной проблемой, я могу взглянуть на него, и мы можем обсудить его там. - person Narm; 29.07.2019
comment
Привет @Narm, это та же тема. Вы также выполняете динамическую компиляцию. На самом деле я только что скачал ваш код со StackBlitz и запустил ng serve --aot, но это не сработало. Он показал мне ошибку выше. - person gencblakqori; 30.07.2019