【问题标题】:ControlValueAccessor know when required is set on reactive formControlValueAccessor 知道何时需要在反应形式上设置
【发布时间】:2020-01-03 00:06:25
【问题描述】:

我有一个自定义控件,它实现了 ControlValueAccessor 并且只与反应形式一起使用。在自定义控件中,我如何知道何时分配或删除了所需的验证器?

我不想只为必需的属性创建一个@Input,因为它只用于反应式表单。

【问题讨论】:

  • 你能分享你的代码吗?
  • 那么这样做的目的是什么,如果我们知道您在自定义组件中获得所需状态的目的可能会有所帮助。

标签: angular angular8 angular-validation controlvalueaccessor


【解决方案1】:

你不需要什么都不做。自定义控件验证器是一个“视图”,是具有或不具有验证器的 formControl。参见例如在this stackblitz

好吧,如果你想知道自定义表单控件中的控件是否有效(这允许我们,例如在自定义表单控件中显示错误),你需要注入 NgControl

一些作者注入删除提供程序并在构造函数中注入 ngControl

  constructor(
    @Self() public ngControl: NgControl,
  ) {
    this.ngControl.valueAccessor = this;
  }

但我更喜欢在 ngOnInit 中进行 - 第一种方法我不知道如何在自定义表单控件中创建验证器 -

  ngOnInit(){
    this.ngControl = this.injector.get(NgControl);
  }

所以,我们可以使用 ngControl.valid、ngControl.errors、ngControl.touched...如果你想知道是否有验证器,你可以询问 ngControl.validator(如果它为 null,则没有验证器),但我没有'不知道是否需要验证器

注意:在示例中,如果您使用工具按钮,内部验证器也很清晰

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-04-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-07-07
    • 2019-09-21
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多