Библиотека Angular 6 с forRoot и AOT - вызовы функций не поддерживаются в декораторах - PullRequest
0 голосов
/ 15 октября 2018

Я пытаюсь включить пользовательскую библиотеку в мое приложение Angular, но у меня проблема с функцией forRoot библиотеки.

Я выкатил свое приложение в качестве причины, так как я создал стартовый проект angular-cli и могу подтвердить ту же ошибку, происходящую там, с ng build --prod:

ОШИБКАОшибка во время компиляции шаблона «AppModule» Вызовы функций не поддерживаются в декораторах, но вызывается «CustomLibModule».

Lib версии

Angular 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 - это не более чем строка.Замена на '' также не работает.


Библиотека была создана с помощью следующего урока , как собирать библиотеку Angular 6 , и находится в шаблоне 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/*"
      ]
    }
  }
}
...