Угловой 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