2

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

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

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

这里是 Stackblitz

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

错误:没有 NgControl 的提供者(“[ERROR ->])

你看有什么问题吗?

谢谢!

4

1 回答 1

11

您好,您可以为您的 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;
  }
于 2019-03-21T08:23:08.083 回答