Угловой 2 пользовательский валидатор с параметрами
Как мне создать, скажем, мой собственный валидатор maxLength в 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;
}
}
Спасибо.
Ответы
Ответ 1
Вот пример. Это средство проверки значения min, в котором вы передаете число для проверки.
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.
Ответ 2
Пример minValueValidator в основном показывает, что вы можете использовать фабрику для своего настраиваемого валидатора, так что это будет примерно так:
static minValue = (num: Number) => {
return (control:Control) => {
var num = control.value;
if (isNaN(num) || num < 5 ) { return {"minValue": true}; }
return null;
}
}
В моем случае я использую FormControl not Control
import { FormControl } from '@angular/forms';
Ответ 3
Самое смешное, что вы можете просто проверить исходный код Angular2:
MaxLengthValidator
Validators