在Angular 8中,可以使用Angular的CompilerOptions
来延迟加载运行时编译器。下面是一个解决方法的代码示例:
首先,打开tsconfig.json
文件,并添加"enableIvy": false
属性,将Ivy编译器禁用,这将使用旧的运行时编译器。
{
"compilerOptions": {
...
"enableIvy": false
},
...
}
然后,在app.module.ts
文件中,将Compiler
和JitCompilerFactory
作为依赖注入提供者导入,并添加一个JIT_COMPILER_OPTIONS
常量,将skipAppModuleCompilation
属性设置为true
,以延迟加载运行时编译器。
import { Compiler, COMPILER_OPTIONS, CompilerFactory, NgModule } from '@angular/core';
import { JitCompilerFactory } from '@angular/platform-browser-dynamic';
export function createCompiler(compilerFactory: CompilerFactory) {
return compilerFactory.createCompiler();
}
@NgModule({
providers: [
{ provide: COMPILER_OPTIONS, useValue: {}, multi: true },
{ provide: CompilerFactory, useClass: JitCompilerFactory, deps: [COMPILER_OPTIONS] },
{ provide: Compiler, useFactory: createCompiler, deps: [CompilerFactory] },
],
})
export class AppModule {}
这样,Angular 8将使用延迟加载的运行时编译器,以解决“Angular 8和延迟模块未加载运行时编译器”的问题。