我想根据验证模式划分错误消息,例如,在下面,有2种模式
public class PostListView : ListView
{
}
但只能设置一条消息。
Validators.pattern(/[^ +]/),
Validators.pattern(/^[ +|a-zA-Z0-9]+$/),
无论如何要分成每个witout进行CustomValidation ??
答案 0 :(得分:0)
您可以在md-error
中使用相同的模式表达式,并将它们分成两个不同的div
- 元素,匹配其中一个
修改强> 在测试myselv之后,我发现你需要使用typescript中的regepx来执行匹配(至少我是如何使它工作的)
在您的组件中,定义yout regexp
emptyRegExp = new RegExp(/[^ +]/);
letterNumberRegExp = new RegExp(/^[ +|a-zA-Z0-9]+$/);
然后在html中使用这些表达式来显示所需的错误消息。
<md-error *ngIf="locaCd.errors?.pattern">
<div *ngIf="emptyRegExp.exec(locaCd?.value)"> Blank is unacceptable.</div>
<div *ngIf="letterNumberRegExp.exec(locaCd?.value))">Must be filled by a~z,A~Z or number.</div>
</md-error>
答案 1 :(得分:0)
默认情况下,Validators.pattern()
接受参数pattern: string | RegExp
,因此我建议您创建自定义验证,处理单个方法可以动态处理。
例如demo.component.ts
import { FormGroup, FormControl, Validators, ValidatorFn } from '@angular/forms';
this.form = new FormGroup({
email: new FormControl('', [
this.customPatternValid({ pattern: /[A-Z]/, msg: 'Small characters not allowed' }),
this.customPatternValid({ pattern: /^([^0-9]*)$/, msg: 'Numbers is not allowed' })
]),
password: new FormControl('', [
Validators.required
])
});
// Create our customPatternValid function
public customPatternValid(config: any): ValidatorFn {
return (control: FormControl) => {
let urlRegEx: RegExp = config.pattern;
if (control.value && !control.value.match(urlRegEx)) {
return {
invalidMsg: config.msg
};
} else {
return null;
}
};
}
例如demo.component.html
<form [formGroup]="form">
<input type="email" placeholder="Email" formControlName="email"/>
<div *ngIf="!form.controls.email.valid && (form.controls.email.dirty ||form.controls.email.touched)" class="error">
<div *ngIf="form.controls.email.errors.invalidMsg">
{{form.controls.email.errors.invalidMsg}}
</div>
</div>
</form>