dart angular2 - validate number in form dart angular2 - validate number in form dart dart

dart angular2 - validate number in form


No, but you can create your own, something like this

const NUMBER_VALIDATOR = const Provider(NG_VALIDATORS, useExisting: NumberValidator, multi: true);@Directive(    selector:    "input[type=number][ngControl],input[type=number][ngFormControl],input[type=number][ngModel])",    providers: const [NUMBER_VALIDATOR])class NumberValidator implements Validator {  ValidatorFn _validator;  NumberValidator(@Attribute("min") String minStr, @Attribute("max") String maxStr) {    final num min = minStr == null ? null : num.parse(minStr);    final num max = maxStr == null ? null : num.parse(maxStr);    this._validator = NumberValidators.minMaxNumberValidator(min, max);  }  Map<String, dynamic> validate(AbstractControl c) {    return this._validator(c);  }}abstract class NumberValidators {  NumberValidators._();  static ValidatorFn minMaxNumberValidator(num min, num max) {    return (AbstractControl control) {      if (Validators.required(control) != null) {        return null;      }      final num value = control.value;      if (value != null) {        if (min != null && value < min) {          return {"min": {"required": min, "actual": value}};        }        if (max != null && value > max) {          return {"max": {"required": max, "actual": value}};        }      }      return null;    };  }}

And then you should add NumberValidator to your component's directives list.Also, if you want to bind variables to min and max, you need not just to pass values into constructor, but re-initialize _validator callback on each min and max attribute set. And in fact may be better to split it to two separate validators (in my case there is also step validator, that can not work separately).