带有forRoot和AOT的Angular 6库-装饰器中不支持函数调用

时间:2018-10-15 14:06:24

标签: angular typescript angular2-aot

我试图在我的Angular应用程序中包含一个自定义库,但是该库的forRoot函数存在问题。

由于我已经创建了一个启动程序angular-cli项目,并且可以使用ng build --prod确认在那里发生的相同错误,因此我已经将我的应用程序推出了。

  

在“ AppModule”函数调用的模板编译期间发生错误时出现错误   装饰器中不支持,但调用了'CustomLibModule'。

库版本

角度6.1.10

Angular-cli 6.2.1

@ angular-devkit / build-ng-packagr 0.8.5


库模块

该库的forRoot方法:

@NgModule({
  imports: [],
})
export class CustomLibModule {

  public static forRoot(key: string, options?: ConfigOptions, version = SupportedVersions.V3): ModuleWithProviders {
    return {
      ngModule: CustomLibModule,
      providers: [
        {provide: PUBLIC_KEY, useValue: key},
        {provide: OPTIONS, useValue: options},
        {provide: VERSION, useValue: version},
      ],
    };
  }
}

提供程序选项是在库中使用的Angular InjectionToken


应用代码

应用程序通过以下方式调用库:

@NgModule({
  declarations: [
    AppComponent,
  ],
  imports: [
    BrowserModule,
    CustomLibModule.forRoot(env.KEY), <-- This causes the error, where `CustomLibModule`, without forRoot, is valid.
  ],
  providers: [],
  bootstrap: [AppComponent]
})
export class AppModule { }

env.KEY只不过是一个字符串。用''替换它也不起作用。


该库是使用以下教程how to build Angular 6 library创建的,位于Angular 6模板中。我还没有修改ts-config。

{
  "compileOnSave": false,
  "compilerOptions": {
    "baseUrl": "./",
    "outDir": "./dist/out-tsc",
    "sourceMap": true,
    "declaration": false,
    "module": "es2015",
    "moduleResolution": "node",
    "emitDecoratorMetadata": true,
    "experimentalDecorators": true,
    "target": "es5",
    "typeRoots": [
      "node_modules/@types"
    ],
    "lib": [
      "es2017",
      "dom"
    ],
    "paths": {
      "core": [
        "dist/custom-lib"
      ],
      "core/*": [
        "dist/custom-lib/*"
      ]
    }
  }
}

0 个答案:

没有答案