- Java 双重比较
- java - 比较器与 Apache BeanComparator
- Objective-C 完成 block 导致额外的方法调用?
- database - RESTful URI 是否应该公开数据库主键?
我目前正在制作一个文本字段,该字段不应为空,也不应允许以特定字符链开头。 (让我们说“测试”)
例如我希望 testxyz
或 无效,而其他任何内容都有效。我已经得到了正则表达式:
/^((?!(test)).)*$/gmi
。我知道像 abctest
这样的东西也是无效的,但这对这种情况并不重要。
问题是,一旦我每次输入一个字符数为偶数(!)的字符串时提交无效输入,验证器就会说这是一个无效输入(它打印“错误 2”;你可以看到它从哪里得到打印在 HTML 中),即使它不是!
例如如果我先写 test
它会给我一个错误,说它无效。正确的。如果我然后写任何字符,比如 a
它不会给我一个错误。也正确。但是只要我写了偶数个字符,不管是什么 (!),比如 aa
或 wxyz
它都会给我一个不应该出现的错误!
无论如何我都可以提交它并且一切正常,这只是验证器的错误“解释”,我不知道他为什么要那样做。也许有人可以帮助我。我在下面添加了代码。
HTML:
<h1 mat-dialog-title>{{data.dialogTitle}}</h1>
<div mat-dialog-content>
<p class="mat-typography">{{data.dialogText}}</p>
</div>
<mat-form-field>
<input matInput [(ngModel)]="name" placeholder="Enter your name?" [formControl]="InputControl">
<mat-error *ngIf='InputControl.hasError("required")'>
Error 1
</mat-error>
<mat-error *ngIf='InputControl.hasError("pattern")'>
Error 2
</mat-error>
</mat-form-field>
<mat-dialog-actions>
<span style="flex: 1 1 auto"></span>
<button mat-flat-button (click)="pressed()" class="mat-primary">OK</button>
</mat-dialog-actions>
typescript :
export class DialogComponent {
regExp = /^((?!(test)).)*$/gmi;
InputControl = new FormControl("", [Validators.required, Validators.pattern(this.regExp)])
@Input() name:string
constructor(public dialogRef: MatDialogRef<DialogComponent>,
@Optional() @Inject(MAT_DIALOG_DATA) public data: any) { }
pressed() {
console.log(this.name.match(this.regExp));
if(this.regExp.test(this.name)) {
alert("valid");
this.dialogRef.close(true);
}
}
}
提前致谢。
最佳答案
根本原因在于执行上下文。在您的 Validators.pattern
函数中,您通过 this.regExp
引用它的参数,但该函数不会在当前 Controller 的范围内执行,因此 在这种情况下,this
不会指向您的 Controller ,而是指向 InputControl
类的某些 Angular 内部结构。所以,简单地说,你丢失了this
。
快速而肮脏的解决方案更改:
Validators.pattern(this.regExp)
到:
Validators.pattern(/^((?!(test)).)*$/gmi)
并验证这些是否有帮助。
如果是,那么如果您仍然希望将模式存储在 Controller 中,您基本上必须将验证器函数包装在另一个 Controller 函数中以将模式包含在闭包中,这将可用于在执行上下文中运行:
getMyValidation(): (AbstractControl): ValidationErrors | null {
let pattern = this.regExp;
return Validators.pattern(pattern)
}
并将其传递给构造函数,如下所示:
InputControl = new FormControl("", [Validators.required, this.getMyValidation()])
关于angular - 我的验证器告诉 'invalid' 即使它实际上不是,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53187094/
我正在尝试向 iOS 应用商店提交更新。我要从 Buzztouch 应用程序转到 Sprite Kit 应用程序。我能够存档 Xcode 项目并提交它。该应用程序的状态为“上传已收到”,但大约一分钟后
我收到了这个奇怪的警告。我不确定是什么原因造成的。 .dia文件扩展名应该表示核心有向图图形文件。我没有添加,应用程序几乎没有用户界面。 最佳答案 我对这个答案并不满意,但我认为它可以帮助人们,直到找
下面用作 Uri 参数的程序集限定字符串在 XAML 中工作,但在代码中使用时会出现错误。 我尝试了各种 UriKind,结果都相同。我该如何解决这个问题? [Test] public void La
我正在开发一个 Angular 应用程序,目的是将其部署到移动设备和 Web 浏览器上。设置表单样式以显示无效输入时,我应该定位 Angular“ng-invalid”类还是 HTML5“:inval
我有一个在 Google App Engine 上运行的应用程序,它是 Android 应用程序的后端。它基本上是 Android 应用程序和在我自己的服务器上运行的 MySQL 数据库之间的桥梁。
我的代码是这样的: func tableView(_ tableView: UITableView, commit editingStyle: UITableViewCellEditingStyle,
I need to encrypt using Python with the A256GCM algorithm, and getting back a JWT that I need to
无法成功编译webpack并生成bundle.js文件。据我了解,我的 src_dir 和 dist_dir 变量能够指向正确的路径,但在尝试编译时我仍然始终收到两个错误之一。 配置对象无效。 Web
因此,当我在 postgres 上运行 regexp_matches 时收到一条错误消息,并且无法弄清楚如何通过它。它似乎在 regex101 等 reg_exp 测试站点上运行良好,但不幸的是在实际
这些是我正在使用的导入: import com.novell.ldap.*; import java.io.UnsupportedEncodingException; 我正在尝试进行一个非常简单的密码
在记录器函数的简写情况下,Pylint 提示 Invalid constant name "myprint"(invalid-name)。 # import from utils import get
我试图创建一个HTML输入标签,该标签仅接受以2种格式之一输入的数字,并拒绝所有其他输入。 我只想接受以下格式的数字,包括破折号: 1234-12 和 1234-12-12 注意:不是日期,而是合法的
我一直在尝试使用 Bootstrap 的表单样式处理 AngularJS 的电子邮件验证,并遇到了这个 CSS block 。 input:focus:required:invalid, textar
我正在编写一个程序,以确保我了解如何在 C 中正确实现单向链表。我目前正在哈佛的 CS50 类(class)中学习,并且使用本教程,因为 CS50 人员不解释链接详细列出数据结构:https://ww
此问题与询问同一消息的另一个问题不重复,但在另一个上下文中。这个问题的上下文只是关于上传截图图像和获取消息。 今天,我在将图片上传到 App Store Connect 时收到一条新消息: Inval
我的代码似乎运行良好,但当我滑动以删除 UITableView 中的一行时,应用程序崩溃并显示以下内容: 错误 LittleToDoApp[70390:4116002] *** Terminating
当我尝试发送语音消息时,总是收到无效的url错误。我正在使用Whisper将音频转换为文本,但由于某种原因,我似乎无法将文件传递给Whisper。当我在Java脚本中使用它而不是在TypeScrip中
我正在尝试在 flutter 上对 http 客户端进行单元测试。在模拟 http 和我的存储库类之后: void main() { MockHttpCLient mockHttpCLient;
我正在使用 pandoc 作为一个库,相关的代码片段是: module Lib ( latexDirToTex, latexToTxt ) where import qualified
我正在开发一个(相对简单的)Rails应用程序。我正在使用Devise gem处理用户 session 。每当我导航到localhost:3000/users/sign_in时,我都会看到Devise
我是一名优秀的程序员,十分优秀!