【问题标题】:Run custom validation before created form在创建表单之前运行自定义验证
【发布时间】:2020-02-25 11:01:18
【问题描述】:

我有一个带有自定义验证的表单。 我需要验证表单,因为表单将是未定义的。如果我不这样做,代码将无法正常工作。目前正在使用此代码进行验证,但我会尝试改进它。

页面加载完成后,程序进入验证(两次)并将我的消息写入控制台(在创建表单之前)。我觉得有些不对劲。在我打开对话框/表单或完成表单创建之前,它不应运行。

  createForm() {
    this.form = this.fb.group({
      name: [this.local_user.name, [Validators.required, this.isExistValidator()]]
    });
  }
isExistValidator(): ValidatorFn {
    return (control: AbstractControl): { [key: string]: boolean } | null => {
      if (this.form) {
        // some code with reutrn isExist:true or null
      }
    };
  }

【问题讨论】:

  • 你为什么要这么做?
  • 似乎是一个 XY 问题...您真的应该问一下您创建表单的方式是否正确,即
  • 如果您有任何建议,请提出。我是初学者,很高兴得到您的帮助。

标签: angular forms validation angular7


【解决方案1】:

这样使用

isExistValidator(): ValidatorFn {
    return (control: AbstractControl): { [key: string]: boolean } | null => {
       if (!control || !control.parent) {
          return null;
       }
       ...
    };
}

【讨论】:

  • 非常感谢。这种自定义验证是否合适?或者它可以更好吗?我是初学者 Angular 程序员。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2013-05-19
  • 1970-01-01
  • 1970-01-01
  • 2011-05-31
  • 1970-01-01
  • 2023-03-08
  • 1970-01-01
相关资源
最近更新 更多