Validation 带参数的Angular 2自定义验证器
我如何在Angular 2中创建自己的maxLength验证器? 我能找到的所有示例都使用类似于“必需”的验证器,这意味着它们已经知道规则。它们只接受一个参数-控件本身。如何传递更多参数 这是我的示例验证器。如何将其修改为将数字5作为参数传递Validation 带参数的Angular 2自定义验证器,validation,parameters,angular,Validation,Parameters,Angular,我如何在Angular 2中创建自己的maxLength验证器? 我能找到的所有示例都使用类似于“必需”的验证器,这意味着它们已经知道规则。它们只接受一个参数-控件本身。如何传递更多参数 这是我的示例验证器。如何将其修改为将数字5作为参数传递 export class MyValidators { static minValue(control:Control): {[s: string]: boolean} { var num = +control.value;
export class MyValidators {
static minValue(control:Control): {[s: string]: boolean} {
var num = +control.value;
if (isNaN(num) || num < 5 ) { return {"minValue": true}; }
return null;
}
}
导出类MyValidator{
静态最小值(控件:控件):{[s:string]:布尔值}{
var num=+control.value;
if(isNaN(num)| num<5){return{“minValue”:true};}
返回null;
}
}
这是一个示例。它是一个最小值验证器,您可以在其中传入一个数字进行验证
import {Control} from 'angular2/common';
export const minValueValidator = (min:number) => {
return (control:Control) => {
var num = +control.value;
if(isNaN(num) || num < min){
return {
minValue: {valid: false}
};
}
return null;
};
};
从'angular2/common'导入{Control};
导出常量minValueValidator=(最小值:编号)=>{
返回(控制:控制)=>{
var num=+control.value;
如果(isNaN(num)| num
更多详细信息可在官方文档页面中找到。minValueValidator示例基本上表明,您可以将工厂用于自定义验证器,因此它类似于以下内容:
static minValue = (num: Number) => {
return (control:Control) => {
var num = control.value;
if (isNaN(num) || num < 5 ) { return {"minValue": true}; }
return null;
}
}
这里的另一个解决方案使用了更多的角度细微差别:
static minValue(min: number): ValidatorFn {
return (control: AbstractControl): ValidationErrors | null => {
if (control.value == null || control.value == '') {
//avoid validation if empty, we are not testing for required here
return null;
}
const errors: ValidationErrors = {};
let num = +control.value;
if (isNaN(num) || num < min) {
errors.isLessThanMin = {
message: `Number must be greater that ${min}`
};
}
return Object.keys(errors).length ? errors : null;
};
}
静态最小值(min:number):验证器fn{
返回(控件:AbstractControl):ValidationErrors | null=>{
if(control.value==null | | control.value==“”){
//如果为空,请避免验证,此处不测试所需的
返回null;
}
常量错误:ValidationErrors={};
让num=+control.value;
如果(isNaN(num)| num
现在您有了一条可重用得多的html错误消息
<div *ngIf="control.errors.isLessThanMin>{{control.errors.isLessThanMin.message}}</div>
minValueValidator=(min:number)=>{}
会更好吗?!这很有效。非常感谢。我还添加了isNaN检查,并将“export const”替换为“static”,使其成为类的成员。更新为包含NAN检查如何将变量值传递给此验证器?我注意到它总是希望字符串常量为,不允许我这样做。AOT编译器不支持此操作,因为不支持lambda:
<div *ngIf="control.errors.isLessThanMin>{{control.errors.isLessThanMin.message}}</div>