我在angular 2中编写了一个自定义验证器
function validateSomething(): ValidatorFn {
return (control: Abstractcontrol): { [key: string]: any } => {
return {'validateSomething': 'Validation failed because'};
}
}
非常简单的验证器。现在在html中,我根据验证器的输出显示一个对话框。我想要的是能够从验证器显示错误('验证失败,因为')。我看到的大多数教程在html中使用了hasError('validateSomething'),然后对错误进行硬编码,如下所示:
<div class="ui pointing orange basic label" *ngIf="form.controls['workDate'].hasError('validateSomething')">
Here I want to display the message from the validator
</div>
有没有办法可以从验证器获取错误消息?
答案 0 :(得分:6)
<div
class="ui pointing orange basic label"
*ngIf="form.getError('validateSomething', 'workDate') as error>
{{ error }}
</div>
答案 1 :(得分:0)
我们假设您有自定义验证指令( appValidateSomething ),它执行一些验证逻辑。 '验证'方法如下:
validate(c: AbstractControl): { [key: string]: any; } {
const v = c.value;
if (isValid(v)) {
return null;
} else {
// Return error object.
return {
'invalidValue': v
}
};
}
在HTML代码中,您可以编写以下代码:
<input [(ngModel)]="model" type="text" #obj1="ngModel" appValidateSomething/>
<div *ngIf="obj1.errors && (obj1.dirty || obj1.touched)">
<div [hidden]="!obj1.errors.invalidValue">Wrong value.</div>
</div>
重要的是,来自验证功能的返回错误对象的'invalidValue'与错误对象'。errors.invalidValue'匹配。