没有,但你可以创建自己的,这样的事情
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;
};
}
}
然后你应该添加NumberValidator
您组件的directives
名单。 此外,如果要将变量绑定到min
和max
,则不需要仅将值传递到构造函数中,而是可以在每个min
和max
属性集上重新初始化_validator
回调。事实上,将它分成两个单独的验证器可能会更好(在我的情况下,验证器也是step
,无法单独工作)。
请发布演示您尝试的代码。 –
我认为'min'和'max'应该以这种方式工作,但我还没有尝试过一段时间。你使用的是什么Angular2版本? –