Max*_*Max 5 typescript angular angular-reactive-forms angular7
我只需要一个来自匹配整数的验证。因此我使用pattern带有正则表达式的验证器(见下文)。此外,该字段不应为空,因此我添加了required验证器。
但pattern错误永远不会被触发。我阅读了 angular 文档并查看了 的源代码,pattern但对我来说仍然没有意义。此外,我已经阅读了几乎所有与此主题相关的关于 stackoverflow 的问题。但我仍然无法弄清楚为什么该模式不起作用。
或许有大佬可以帮帮我,谢谢!
这是我的代码 component.ts:
// definition of the formcontrol
hours = new FormControl('', [
Validators.required,
Validators.pattern('^[0-9]*$'),
])
// for debugging
log() {
console.log('required: ', this.hours.hasError('required'));
console.log('pattern: ', this.hours.hasError('pattern'));
console.log('Erros: ', this.hours.errors);
}
Run Code Online (Sandbox Code Playgroud)
模板:
<mat-form-field>
<input matInput [formControl]="hours" (input)="log()"
placeholder="Anzahl der ausbezahlten Überstunden" type="number">
<mat-error *ngIf="hours.hasError('required') && !hours.hasError('pattern')">
Anzahl der Überstunden fehlt!
</mat-error>
<mat-error *ngIf="!hours.hasError('required') && hours.hasError('pattern')">
Anzahl muss eine Ganzzahl sein!
</mat-error>
</mat-form-field>
Run Code Online (Sandbox Code Playgroud)
例子inputValue="":
required: true
pattern: false
Error: Object { required: true }
Run Code Online (Sandbox Code Playgroud)
inputValue="1":
required: false
pattern: false
Error: null
Run Code Online (Sandbox Code Playgroud)
inputValue="a":
required: true
pattern: false
Error: Object { required: true }
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
14478 次 |
| 最近记录: |