我编写了一个带有一些服务的角度库,以便在不同的角度应用程序中使用它。在没有 --prod 的情况下一切正常,因此在 Angular 应用程序中没有 AOT 编译。
使用 ng-packagr 以及 cli 以及一些不同的 yeoman 生成器生成库每次都会产生相同的错误。此外,我尝试了不同的 ng 版本(5.xx、6.xx 和 7.xx)。但是在所有情况下,当我在应用程序的 app.module 中调用 LoggerModule.forRoot() 时,每次(使用 AOT)都会出现相同的错误:
ERROR in Error during template compile of 'AppModule'
Function calls are not supported in decorators but 'LoggerModule' was called.
我阅读了很多关于这个主题的文章,在 tsconfig 中尝试了不同的 angularCompilerOptions。还有其他想法吗?该模块在没有 AOT 的情况下工作正常(但这不是我们的选择)......
库的 NgModule:
@NgModule({
declarations: [],
imports: [],
providers: []
})
export class LoggerModule {
static forRoot(): ModuleWithProviders {
return {
ngModule: LoggerModule,
providers: [LoggerService]
}
}
}
应用程序的 NgModule:
@NgModule({
declarations: [
AppComponent
],
imports: [
BrowserModule,
AppRoutingModule,
LoggerModule.forRoot()
],
providers: [],
bootstrap: [AppComponent],
entryComponents: [AppComponent]
})
export class AppModule {
}