angular - 自定义反应形式验证器中的角度多个错误
问题描述
我正在验证一个呼叫中心的表格,其中通常会按特定顺序填写字段。如果用户向前跳过,我想为多个字段引发错误。我发现以下工作:
export const recordValidator: ValidatorFn = (control: FormGroup): ValidationErrors | null => {
if(!firstField.value && !secondField.Value && !thirdField.value)
{
firstField.setErrors({ "firstFieldError" : true});
secondField.setErrors({ "secondFieldError" : true});
return {"firstFieldError" : true, "secondFieldError" : true};
}
}
并且 firstField 和 secondField 都正确显示错误。
现在根据文档ValidationErrors 只是错误的映射。但它显然没有任何方法,所以我想我只是将现有映射转换为 ValidationErrors 并返回:
export const recordValidator: ValidatorFn = (control: FormGroup): ValidationErrors | null => {
if(!firstField.value && !secondField.Value && !thirdField.value)
{
firstField.setErrors({ "firstFieldError" : true});
secondField.setErrors({ "secondFieldError" : true});
let errorMap = new Map();
errorMap.set("firstFieldError",true);
errorMap.set("secondFieldError",true);
let errorValidators:ValidationErrors = errorMap;
return errorValidators;
}
}
但它不会引发任何错误。
我的模板如下所示:
<mat-form-field>
<input formControlName="firstField" type="datetime-local" placeholder="First Field" [errorStateMatcher]="errorMatcher" matInput>
<mat-error *ngIf="Form.errors?.firstFieldError">
First field error!
</mat-error>
</mat-form-field>
谁能帮我看看为什么第一个有效而第二个无效
解决方案
吉姆,自定义验证器不像你说的那样工作。您需要返回一个对象(或 null)。所以你的验证必须喜欢一些
export const recordValidator: ValidatorFn = (control: FormGroup): ValidationErrors | null => {
let invalid=false
const error={}
if (!control.value.firstField && control.value.secondField)
{
error.firstFieldError=true;
invalid=true;
}
if (!control.value.secondField && control.value.thirdField)
{
error.secondFieldError=true;
invalid=true;
}
return invalid?error:null;
}
看看我们如何从“控制”中获取价值——它是 formGroup——以及我们如何创建一个具有一两个属性的对象——如果你写检查,你可以在你的 .html 中看到——
{{form.errors|json}}
注意:我真的不了解您的验证器,并想象有人会考虑您问题中的描述
推荐阅读
- vba - VBA声明未定义的类型变量?
- css - 缩放 CSS 按钮样式
- javascript - 我怎样才能解决这个问题?我无法访问收到的数据?
- elasticsearch - 按预定顺序获取结果
- c# - 从官方 Raspberry Pi 7" Display 读取屏幕背光值
- javascript - 0 作为 reduce 函数的 initalValue 的作用是什么?
- azure - 什么是 Azure Event Hub 中的消费者组?
- html - 我的函数返回 /static/images%5Cstore%5Cteststore.1548589567.xlg.png
- sql - 当字段作为变量/参数输入时如何创建更新语句
- circleci - CircleCI - 默认分支上的标签不起作用