Angular错误:没有 NgControl 的提供者

Angular ERROR in : No provider for NgControl

我正在创建一个实现 ControlValueAccessor 的组件以用于响应式表单,它只是一个输入元素的包装器,上面有一些管道。

我注入了 NgControl 以检索 valid/invalid 状态并将它们传播到内部输入元素。

当在另一个输入中找到输入值时,它是无效的。

Here is the Stackblitz

在 Stackblitz 上工作正常,但是当我进行 ng build --prod 时,它引发了错误:

ERROR in : No provider for NgControl ("[ERROR ->])

你看到什么问题了吗?

谢谢!

您好,您可以为您的 NgControl 添加“@Optional”装饰器。如果找不到提供商,它将使用 null。有关详细信息,请查看:https://angular.io/api/core/Optional

在您的代码中:

import { Component, Input, OnInit, Self,Optional } from '@angular/core';

...
      constructor(
    @Self() @Optional() private controlContainer: NgControl
  ) {
    this.controlContainer.valueAccessor = this;
  }