Reactive forms regex.test不是一个函数
我有一个模型,它使用反应形式,不断给我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
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我不知道如何创建聊天室,你能快点吗?吉特: