【问题标题】:Angular 6 : Validators.pattern not working properlyAngular 6:Validators.pattern 无法正常工作
【发布时间】:2019-02-02 23:33:05
【问题描述】:

我有一个字段的 Validators.pattern,这是我对表单进行的唯一验证。

正常使用正常。它会正确验证该字段,但是当您尝试复制和粘贴时会出现问题。

如果你在字段上重复复制粘贴,就像是在切换字段的有效性(如果表单无效,则提交按钮被禁用)

当我从其他来源(如搜索或自动建议)填充数据时也会出现问题。

buildForm(obj) {
  this.form = this.fb.group({
    field: [obj['field'] || '', Validators.pattern(/MY_REG_EX_HERE/g)],
    id: [obj['id'] || ''],
  });  
}

【问题讨论】:

  • 你能给出一些代码示例吗?
  • 更新了问题

标签: angular6


【解决方案1】:

我不太确定问题的主要原因,但作为一种解决方法,我使用相同的 REGEX 创建了自定义验证器。我会把它贴在这里,可能会对某人有所帮助。

import { AbstractControl, ValidationErrors, ValidatorFn } from '@angular/forms';

export function customValidator(control: AbstractControl) {
    if (control.value !== '') {
      const isValid = (/MY_REG_EX_HERE/g).test(control.value)
      return isValid ? null : { customValidator: true };
    } else {
      return null;
    }
}

【讨论】:

    【解决方案2】:

    我遇到了类似的问题。我仔细研究了一下,找到了原因。像我一样,您正在使用 /g 修饰符。如果将正则表达式分配给变量,则会产生副作用。此修饰符指示在字符串中继续搜索。要了解“意外”行为,请查看屏幕截图。

    你可以查到more information here

    【讨论】:

      猜你喜欢
      • 2019-01-24
      • 2020-03-09
      • 2018-10-29
      • 2019-03-11
      • 2019-03-07
      • 2019-05-02
      • 2017-07-12
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多