Angular APP_INITIALIZER in library module generates metadata compile time error: Lambda not supported
Angular APP_INITIALIZER in library module generates metadata compile time error: Lambda not supported
这是我的 ng 库模块代码
@NgModule({
imports: [NgIdleModule.forRoot()],
providers: [ {
provide: APP_INITIALIZER,
useFactory: (idleStateChangeHandlerService: IdleStateChangeHandlerService) => () => console.log(IdleStateChangeHandlerService),
multi: true,
deps: [IdleStateChangeHandlerService]
}]
})
export class IdleActivityModule {
static forRoot(config: IdleActivityConfig): ModuleWithProviders {
return {
ngModule: IdleActivityModule,
providers: [
{
provide: IdleActivityConfigInjectionToken,
useValue: config
}
]
};
}
}
构建中:
> Compiling TypeScript sources through ngc ERROR:
> C:/_dev/seemis-workspace/projects/shared-modules/src/lib/idle-activity/idle-activity.module.ts:9:1:
> Error encountered in metadata generated for exported symbol
> 'IdleActivityModule':
> C:/_dev/seemis-workspace/projects/shared-modules/src/lib/idle-activity/idle-activity.module.ts:13:17:
> Metadata collected contains an error that will be reported at runtime:
> Lambda not supported. {"__symbolic":"error","message":"Lambda not
> supported","line":12,"character":16}
如果我将 APP_INITIALIZER
提供程序移动到应用程序模块中,这很好,但我不希望应用程序必须具有此知识。
这是用一些功夫黑魔法解决的:
添加代码注释@dynamic
// @dynamic
@NgModule({ ...
看到Angular Compiler Options无非是为了更加困惑。
这是我的 ng 库模块代码
@NgModule({
imports: [NgIdleModule.forRoot()],
providers: [ {
provide: APP_INITIALIZER,
useFactory: (idleStateChangeHandlerService: IdleStateChangeHandlerService) => () => console.log(IdleStateChangeHandlerService),
multi: true,
deps: [IdleStateChangeHandlerService]
}]
})
export class IdleActivityModule {
static forRoot(config: IdleActivityConfig): ModuleWithProviders {
return {
ngModule: IdleActivityModule,
providers: [
{
provide: IdleActivityConfigInjectionToken,
useValue: config
}
]
};
}
}
构建中:
> Compiling TypeScript sources through ngc ERROR:
> C:/_dev/seemis-workspace/projects/shared-modules/src/lib/idle-activity/idle-activity.module.ts:9:1:
> Error encountered in metadata generated for exported symbol
> 'IdleActivityModule':
> C:/_dev/seemis-workspace/projects/shared-modules/src/lib/idle-activity/idle-activity.module.ts:13:17:
> Metadata collected contains an error that will be reported at runtime:
> Lambda not supported. {"__symbolic":"error","message":"Lambda not
> supported","line":12,"character":16}
如果我将 APP_INITIALIZER
提供程序移动到应用程序模块中,这很好,但我不希望应用程序必须具有此知识。
这是用一些功夫黑魔法解决的:
添加代码注释@dynamic
// @dynamic
@NgModule({ ...
看到Angular Compiler Options无非是为了更加困惑。