Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Reactive forms regex.test不是一个函数_Regex_Angular_Typescript_Angular Reactive Forms - Fatal编程技术网

Reactive forms regex.test不是一个函数

Reactive forms regex.test不是一个函数,regex,angular,typescript,angular-reactive-forms,Regex,Angular,Typescript,Angular Reactive Forms,我有一个模型,它使用反应形式,不断给我regex的错误。test不是一个函数 模型如下所示: import { date, email, maxDate, maxLength, minDate, minLength, pattern, prop, required } from "@rxweb/reactive-form-validators"; export class UserInfo { @required() public firstName: string; @req

我有一个模型,它使用反应形式,不断给我regex的错误。test不是一个函数

模型如下所示:

import { date, email, maxDate, maxLength, minDate, minLength, pattern, prop, required } from "@rxweb/reactive-form-validators";

export class UserInfo {

  @required()
  public firstName: string;

  @required()
  public lastName: string;

  @pattern({expression: {pattern: /(^\+?[\d\W-/]{4,16}$)/ } })
  @minLength({value: 4})
  public phoneNumber: string;

}
this.user.phoneNumber = "";
this.baseForm = this.formBuilder.formGroup(this.user) as RxFormGroup;
this.baseForm = this.formBuilder.formGroup(this.user) as RxFormGroup;
    (this.baseForm .controls.phoneNumber as FormControl)
      .addValidators(
        [TextValidator.regexMatchValidator(new RegExp(/(^\+?[\d\W-/]{4,16}$)/), "error message")]);
错误呢

ERROR TypeError: regex.test is not a function
    at Function.isValid (reactive-form-validators.js:719)
    at reactive-form-validators.js:3418
    at forms.js:1155
    at Array.map (<anonymous>)
    at _executeValidators (forms.js:1151)
    at RxFormControl.validator (forms.js:1096)
    at RxFormControl._runValidator (forms.js:3438)
    at RxFormControl.updateValueAndValidity (forms.js:3399)
    at new FormControl (forms.js:3843)
    at new RxFormControl (reactive-form-validators.js:2017)
更奇怪的是,只有当我确实有电话号码的数据时才会发生这种情况。如果我的电话号码是空的,它就可以正常工作

我甚至测试了以下内容:

import { date, email, maxDate, maxLength, minDate, minLength, pattern, prop, required } from "@rxweb/reactive-form-validators";

export class UserInfo {

  @required()
  public firstName: string;

  @required()
  public lastName: string;

  @pattern({expression: {pattern: /(^\+?[\d\W-/]{4,16}$)/ } })
  @minLength({value: 4})
  public phoneNumber: string;

}
this.user.phoneNumber = "";
this.baseForm = this.formBuilder.formGroup(this.user) as RxFormGroup;
this.baseForm = this.formBuilder.formGroup(this.user) as RxFormGroup;
    (this.baseForm .controls.phoneNumber as FormControl)
      .addValidators(
        [TextValidator.regexMatchValidator(new RegExp(/(^\+?[\d\W-/]{4,16}$)/), "error message")]);

这是有效的。对我来说更奇怪的是,我在上面做了一个小例子,它在数据方面也没有任何问题

它正在我的机器中工作,请检查下图:


如果您有一个模式不起作用的示例,那么请分享相同的

我找到了一个解决方案,它如下所示:

import { date, email, maxDate, maxLength, minDate, minLength, pattern, prop, required } from "@rxweb/reactive-form-validators";

export class UserInfo {

  @required()
  public firstName: string;

  @required()
  public lastName: string;

  @pattern({expression: {pattern: /(^\+?[\d\W-/]{4,16}$)/ } })
  @minLength({value: 4})
  public phoneNumber: string;

}
this.user.phoneNumber = "";
this.baseForm = this.formBuilder.formGroup(this.user) as RxFormGroup;
this.baseForm = this.formBuilder.formGroup(this.user) as RxFormGroup;
    (this.baseForm .controls.phoneNumber as FormControl)
      .addValidators(
        [TextValidator.regexMatchValidator(new RegExp(/(^\+?[\d\W-/]{4,16}$)/), "error message")]);

基本上在表单初始化后添加一个验证器

FYI:始终将文本
-
放在字符类的开始或结束处:
[\d\W\/-]
@WiktorStribiżew我也尝试过,但最终还是遇到了同样的问题是的,因为主要问题在代码中。你的答案可能是@WiktorStribiżew我已经创建了一个新实例,手动映射,没有任何东西它也适用于我在stackblitz上创建的示例,我不知道为什么它不适用于我的solution@heisenberg没问题,它在我本地的机器上工作。提供的屏幕截图不是stackblitz运行示例。有趣的问题,如果你能提供更多的细节,我想深入探讨一下this@heisenberg如果我们可以使用stackoverflow聊天室或rxweb gitter聊天频道那就太好了我不知道如何打开聊天室eheh@heisenberg我不知道如何创建聊天室,你能快点吗?吉特: