角库-NullInjectorError:StaticInjectorError(AppModule)[NgClassImpl-> ElementRef]

时间:2019-10-07 13:14:24

标签: angular npm angular-cli angular8 angular-cli-v8

我确实有问题。 我正在Angular库中构建组件:

<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中构建库的正确方法吗?

谢谢!

0 个答案:

没有答案