Библиотека углов - NullInjectorError: StaticInjectorError (AppModule) [NgClassImpl -> ElementRef] - PullRequest
1 голос
/ 07 октября 2019

У меня есть проблема. Я строю компонент в угловой библиотеке:

<button
    class="btn btn-white btn-home"
    [class]="getClassBySeverity()"
    [disabled]="disabled"
    [hidden]="!renderer"
    [ngClass]="{ uppercase: uppercase }"
    [type]="type"
    [style.color]="labelColor"
    [style.backgroundColor]="backgroundColor"
  >
    <span [hidden]="!hasIcon()">
      <span
        [ngClass]="{ 'btn-icon-left': icon }"
        [hidden]="!isLeftPosition()"
        [class]="icon"
      ></span
      >{{ label
      }}<span
        [hidden]="isLeftPosition()"
        [ngClass]="{ 'btn-icon-right': icon }"
        [class]="icon"
      ></span>
    </span>
    <span [hidden]="hasIcon()">{{ label }}</span>
  </button>

Но когда я встраивал этот компонент в свое приложение, я получал:

ОШИБКА NullInjectorError: StaticInjectorError (AppModule) [NgClassImpl-> ElementRef]: StaticInjectorError (Платформа: ядро) [NgClassImpl -> ElementRef]: NullInjectorError: Нет поставщика для ElementRef!

Это происходит потому, что ngClass .

Если я создаю свой компонент внутри приложения, он работает нормально.

Я обнаружил проблему в github, в которой мне нужно поместить preserveSymlinks в мой tsconfig.lib. json :

"angularCompilerOptions": {
    "annotateForClosureCompiler": true,
    "skipTemplateCodegen": true,
    "strictMetadataEmit": true,
    "fullTemplateTypeCheck": true,
    "strictInjectionParameters": true,
    "enableResourceInlining": true,
    "preserveSymlinks": true
  }

Но это все равно не работает.

Кто-нибудь знает правильный способ создания библиотек на Angular?

Спасибо!

...