【问题标题】:Angular: How to import JitCompilerFactory?Angular:如何导入 JitCompilerFactory?
【发布时间】:2019-01-06 00:38:17
【问题描述】:

如果我使用 AOT 编译,将无法进行动态编译。所以我需要将编译器加载到浏览器中。那么我该如何加载呢?如果我使用

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

但是,在导入 JitCompilerFactory 后,我收到以下错误:

“在 'angular/compiler' 中找不到导出 'JitCompilerFactory'

所以我现在需要从'angular/platform-browser-dynamic' 导入它以进行动态编译吗?

【问题讨论】:

  • this 回答帮助了吗?

标签: angular aot angular-compiler angular-dynamic-components


【解决方案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 Demo,如果你想在那里玩它的话。

【讨论】:

  • @angularindepth-com 是的,它有帮助。
  • 感谢这个例子。需要注意的一点是core-js 已更改其在3.0.1 中的导入路径。我必须将此添加到我的 polyfills.ts:import 'core-js/es/reflect'; import 'core-js/stable/reflect'; import 'core-js/features/reflect';.
  • @Narm 我正在尝试这个例子,但是得到一个错误:``` ERROR 错误:没有为“DynamicComponentModule”找到 NgModule 元数据。 ```我认为我的做法与您的做法完全相同,而且我更新了您示例的依赖项,就像它们在我的项目中一样,它仍然适用于您,但不适用于我。知道我还应该注意什么吗?
  • @Narm 实际上,当我在您的项目上运行 ng serve --aot=true 时,我会遇到同样的错误。
  • 嗨@Narm,这是同一个主题。你也在做动态编译。事实上,我刚刚从 StackBlitz 下载了您的代码并运行了ng serve --aot,但它没有用。它向我显示了上面的错误。
猜你喜欢
  • 2020-08-15
  • 2021-08-10
  • 2016-10-31
  • 2018-11-24
  • 2021-03-03
  • 2019-04-03
  • 1970-01-01
  • 2017-06-03
  • 2017-02-22
相关资源
最近更新 更多