ありませんが、あなたは、この
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;
};
}
}
のようなものを独自に作成することができます。そして、あなたのコンポーネントのdirectives
リストにNumberValidator
を追加する必要があります。 また、変数をmin
とmax
にバインドする場合は、値をコンストラクタに渡すだけでなく、それぞれmin
およびmax
属性セットの_validator
コールバックを再初期化する必要があります。実際には2つの別々のバリデーターに分割するほうが良いかもしれません(私の場合、別々には動作しないstep
バリデーターもあります)。
あなたが試したことを示すコードを投稿してください。 –
私は 'min'と' max'はこのように動作するはずだと思いますが、かなり時間がたってから試していません。どのAngular2バージョンを使用していますか? –