gpt4 book ai didi

validation - 如何一次只显示一个验证错误

转载 作者:太空狗 更新时间:2023-10-29 17:17:39 24 4
gpt4 key购买 nike

我有这段代码可以在我的表单上显示错误

<input [ngFormControl]="form1.controls['thing']" type="text" id="thing" #thing="ngForm">
<div *ngIf='thing.dirty && !thing.valid'>
<div class="err" *ngIf='thing.errors.required'>
Thing is required.
</div >
<div class="err" *ngIf='thing.errors.invalid'>
Thing is invalid.
</div >
</div>

但是如果 thing 有两个错误,这两个错误就会显示出来。比方说,如果我的输入有 5 个验证器,那么 5 个 div 就会显示出来,这不太好。如何一次只显示一个error div

最佳答案

您可以创建一个自定义管道来获取验证器错误对象的第一个元素:

@Pipe({
name: 'first'
})
export class FirstKeyPipe {
transform(obj) {
var keys = Object.keys(obj);
if (keys && keys.length>0) {
return keys[0];
}
return null;
}
}

这样你就可以只显示一个错误:

@Component({
selector: 'my-app',
template: `
<form>
<input [ngFormControl]="form.controls.input1">
<div *ngIf="form.controls.input1.errors">
<div *ngIf="(form.controls.input1.errors | first)==='required'">
Required
</div>
<div *ngIf="(form.controls.input1.errors | first)==='custom'">
Custom
</div>
</div>
</form>
`,
pipes: [ FirstKeyPipe ]
})
export class MyFormComponent {
constructor(private fb:FormBuilder) {
this.form = fb.group({
input1: ['', Validators.compose([Validators.required, customValidator])]
});
}
}

查看此插件:https://plnkr.co/edit/c0CqOGuzvFHHh5K4XNnA?p=preview .

注意:同意 Günter 创建一个可用的组件 ;-) 请参阅本文了解更多详情:

关于validation - 如何一次只显示一个验证错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36443068/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com