Angular 如何区分多个validator.pattern

Angular 如何区分多个validator.pattern,angular,validation,angular-validation,Angular,Validation,Angular Validation,我有一个用户需要输入经度的输入。当用户键入NaN或不够精确时,我希望能够显示不同的错误消息。我正在使用FormControl.hasError('ValidatorsName')通过验证获取错误,但似乎我无法区分这些模式 模板: 经度必须是一个数字 经度必须至少有5个十进制数 还有我的角度代码: this.longitude=新表单控件(this.attraction.longitude[ //这是一个有效的数字 模式(新的RegExp('(\d{1,3})([.|,]{,1})(\d+),

我有一个用户需要输入经度的输入。当用户键入
NaN
不够精确时,我希望能够显示不同的错误消息。我正在使用
FormControl.hasError('ValidatorsName')
通过验证获取错误,但似乎我无法区分这些模式

模板:


经度必须是一个数字
经度必须至少有5个十进制数
还有我的角度代码:

this.longitude=新表单控件(this.attraction.longitude[
//这是一个有效的数字
模式(新的RegExp('(\d{1,3})([.|,]{,1})(\d+),'gi')),
//足够精确了吗
模式(新的RegExp('(\-{0,1})(\d{1,3})([.\124;,]{1})(\d{5,13}),'i'))
]);

有没有办法给这些模式一个标识符?非常感谢您的帮助。

不幸的是,无法为验证器提供自定义标识符

更新日期:2018年2月17日21:00 正如Dawid Zbinski在评论中提到的,多个错误与相同的错误(例如:'模式')被覆盖,我更新了我的答案

创建一个自定义验证器,将正则表达式和预定义错误作为参数传递:

regexValidator(regex:RegExp,错误:ValidationErrors):ValidatorFn{
return(control:AbstractControl):{[key:string]:any}=>{
如果(!control.value){
返回null;
}
const valid=regex.test(control.value);
返回有效?空:错误;
};

}
看起来它不起作用了。似乎当您声明了多个模式时,最后一个模式将覆盖其他模式。我试图将
getError('pattern')
记录到控制台日志中,我发现它仍然是一样的,这就是为什么我认为可能是它。但是非常感谢您花时间在这一点上。我真的很感激。据我所知,有可能创建您自己的验证器,因此您可以对它们进行区分。请注意,错误对象中的空字符串应为null而不是this.regexValidator(new RegExp('^.{5,}$'),{precision':''})
this.regexValidator(new RegExp('^.{5,}$'),{precision':null})