2016-04-20 51 views
12

如何在Angular 2中创建我自己的maxLength验证程序? 我能找到的所有例子都使用类似于'required'的验证器,其中一个意思是他们已经知道规则。他们只接受一个参数 - 控制本身。我如何传递更多参数?带有参数的Angular 2自定义验证程序

这里是我有的示例验证器。我如何修改它以传递数字5作为参数?

export class MyValidators { 
    static minValue(control:Control): {[s: string]: boolean} { 
     var num = +control.value; 
     if (isNaN(num) || num < 5) { return {"minValue": true}; } 
     return null; 
    } 
} 

谢谢。

回答

17

这里是一个样本。这是一个最小值验证程序,您可以通过一个数字来验证。

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; 
    }; 
}; 

更多详细信息可在Custom Validators官方文档页面找到。

+0

'minValueValidator =(min:number)=> {}'会更好吗?! –

+0

@A_Singh好点。更新 – TGH

+0

这是有效的。谢谢! 我还添加了isNaN检查,并用'static'替换'export const'使其成为类的成员。 – rook

-1

有趣的是,你可以简单地检查Angular2源代码:

MaxLengthValidator

Validators

+1

探索包含像ValidatorFn这样的内部组件的Angular源代码并不完全是我正在寻找的。 这里是我有的示例验证器。我如何修改它以传递数字5作为参数? 'export class MyValidators {0} {0} {0} {0}如果(isNaN(num)|| num <5){ return {“minValue”:true}; } return null; } }' – rook

+1

哇,这根本没有帮助。 – Belmiris

2

的minValueValidator例如基本上表明您可以使用一个工厂自定义验证所以这将是这样的:

static minValue = (num: Number) => { 
    return (control:Control) => { 
     var num = control.value; 
     if (isNaN(num) || num < 5) { return {"minValue": true}; } 
     return null; 
    } 
} 

在我来说,我使用FormControl控制

import { FormControl } from '@angular/forms';