Я пытаюсь добавить директиву динамический мин / макс , которая не позволяет вводить неправильные значения вручную И с помощью up/ стрелки вниз , основанные на моих значениях шаблона [min] и [max].
Отлично работает при вводе значений вручную, отображаются ошибки.Но я теряю нативное поведение, которое не позволяет набирать неправильные числа, используя стрелки вверх / вниз на входе ...
html пример:
<input name="ph" type="number" [(ngModel)]="plotData.soilCharacteristics.ph.value" ngFormMinMax [min]="defaultPlotParameters.soil.ph.min" [max]="defaultPlotParameters.soil.ph.max"/>
код директивы:
@Directive({
selector: '[ngFormMinMax]',
providers: [{ provide: NG_VALIDATORS, useExisting: WfNgMinMaxDirective, multi: true }]
})
export class WfNgMinMaxDirective implements Validator {
@Input()
ngModel: NgModel;
_min: number;
@Input()
set min(value: number) {
this._min = value;
}
_max: number;
@Input()
set max(value: number) {
this._max = value;
}
validate(control: AbstractControl): ValidationErrors | null {
if (control.value > this._max) {
return { max: { invalid: true } };
}
if (control.value < this._min) {
return { min: { invalid: true } };
}
return null;
}
}
Поведение:
со значением [max], установленным на 10, я могу вручную ввести 11, и ошибка покажет, , но я также могу перейти к 11 с помощью стрелок вверх / вниз от ввода.При удалении директивы клавиша вверх / вниз блокируется до 10, как и ожидалось, но я теряю ручную проверку ...
Кажется, что поведение клавиши вверх / вниз по умолчанию переопределяется, есть ли способпредотвратить это?Я думал, что использование NG_VALIDATORSproviders было способом сделать это?
Спасибо