angular - Angular - 如何自动触发 mat-error
问题描述
我有一个表单,动态填写 init(使用数据库数据)。
我添加了一个模式检查(使用一些正则表达式)。如果图案不好,mat-error
则显示 a。如果我专注于然后专注于输入,它就会起作用。
setValue()
但是如果我使用FormControl 中的函数,mat-error 不会自动显示。
这是 mat-error 定义:
<input [id]="field.id" matInput type="text" [formControl]="field.control" [pattern]="field.pattern">
<mat-error class="mt-1" *ngIf="field.control.errors">
{{ getErrorMessage(field.id, category['id']) }}
</mat-error>
以及我自动设置值的方式
async fillForm(data: any): Promise<any> {
this.fields = data.fields;
for (let category in this.fields) {
for (let cpt in this.fields[category]) {
let field = this.fields[category][cpt];
this.form[category].push({
id: field.id,
label: field.label,
required: field.required,
control: new FormControl(),
type: field.type,
pattern: this.getPattern(field.format),
color: field.color,
unit: field.unit,
class: field.class,
format: field.format,
display: field.display,
format_icon: field.format_icon,
display_icon: field.display_icon,
class_label: field.class_label,
cpt: 0,
});
let value = this.invoice.datas[field.id];
let _field = this.form[category][this.form[category].length - 1];
_field.control.setValue(value);
}
}
}
谢谢你的帮助
解决方案
让我们试试这个方法:
<input [id]="field.id" matInput type="text" [formControl]="field.control">
<mat-error class="mt-1" *ngIf="field.control.errors">
{{ getErrorMessage(field.id, category['id']) }}
</mat-error>
async fillForm(data: any): Promise<any> {
this.fields = data.fields;
for (let category in this.fields) {
for (let cpt in this.fields[category]) {
let field = this.fields[category][cpt];
let value = this.invoice.datas[field.id];
this.form[category].push({
id: field.id,
label: field.label,
required: field.required,
control: new FormControl(value, [Validators.pattern(this.getPattern(field.format))]),
type: field.type,
pattern: this.getPattern(field.format),
color: field.color,
unit: field.unit,
class: field.class,
format: field.format,
display: field.display,
format_icon: field.format_icon,
display_icon: field.display_icon,
class_label: field.class_label,
cpt: 0,
});
}
}
}
推荐阅读
- android - 实时数据库安全 [Android]
- html - Bootstrap 4 列未达到 100% 高度
- windows - 如何在 .bat 文件 (Windows) 中使用 ImageMagick 来调整所有子目录中的所有图像的大小?
- gitlab - GitLab 新分支添加连接超时
- html - 背景:固定;在 chrome 中滚动时消失
- c++ - 自顶向下动态编程 VS 递归朴素解决方案。检查运行时执行
- python - 如何从 TensorFlow Dataset map 函数输出列表?
- node.js - Nodejs POST未接收文件
- scala - 如何将格式为“3/22/2018 12:24:29 PM”的日期时间字符串格式化为sql时间戳以插入内存数据库中的h2?
- jenkins - jenkins 管道附加参数