javascript - 如何在 Angular 中一段时间后在 mat-input 上设置错误?
问题描述
延迟一段时间后,我需要在输入字段上显示验证错误。到目前为止,我有这个代码。
html
<form [formGroup]="myGroup">
<mat-form-field>
<mat-label>Age</mat-label>
<input matInput formControlName="age" placeholder="0">
</mat-form-field>
<span class="error" *ngIf="myGroup.get('age').hasError('maxlength')">age should be max 2 digits.</span>
</form>
打字稿
myGroup: FormGroup;
constructor () {
this.myGroup = new FormGroup({
age: new FormControl(null, {
validators: [Validators.maxLength(2)]
}),
});
}
我需要在 1 秒键入结束后显示验证消息。怎么做。
解决方案
在您的情况下,您不必使用控制验证器机制。您可以创建一个完全控制自己的替代方案。每个控件都公开了一个valueChanges
可观察对象,您可以利用和使用.RxJS
debounceTime
myGroup: FormGroup;
constructor () {
this.myGroup = new FormGroup({
age: new FormControl(null)
});
}
ngOnInit() {
const age = this.myGroup.get('age');
if (age) {
age.valueChanges.pipe(
debounceTime(1000)
).subscribe(() => age.setErrors(Validators.maxLength(2)(age)))
}
}
我从这篇很棒的媒体文章中找到了上面的代码。
在这里找到工作演示。
推荐阅读
- python - 命令,pip install --upgrade pip,安装所有版本的pip
- redis - 如何在一个命令中批量删除redis键
- php - 如何从同时运行的 6 个 php 文件中检索表中的唯一行?
- javascript - 如何编写一串 Google Drive 文件父级的脚本?
- python - python子进程输出重定向
- types - Yaml列表和对象的区别,以及它们的用法
- oracle - Oracle - 返回动态列名的表函数
- python - 带数组的条件循环
- python - Python 元素一旦放入函数中就不起作用
- mysql - 如果已经购买,则显示带有标志的完整书籍列表