入力を防止するinputNumber
指示を作成しようとしています(値が間違っている場合は入力を強調表示しませんが、でも入力値は) :角4入力[type = 'number']最小/最大での入力を防止します
A)文字や記号は、唯一[0-9] B)に対してmin
とmax
paramsは C)greaterOrEqual
/lessOrEqual
特性を介してビュー内の他のそのような指示との関係であることに制限します。
これは私のinput-number.directive.ts
です:
import {Directive, HostListener, Input} from '@angular/core';
@Directive({
selector: '[inputNumber]'
})
export class InputNumberDirective {
@Input() min: number = 0; // will be input
@Input() max: number = 100; // will be input
@Input() greaterOrEqual: number = 23; // will be input
@Input() lessOrEqual: number = 77; // will be input
@HostListener('keypress', ['$event']) sanitizeValue(event: KeyboardEvent): boolean {
const targetVal: number = Number((<HTMLInputElement>event.target).value);
if (event.charCode >= 48 && event.charCode < 58) {
if (this.min !== null && targetVal < this.min) {
return false;
}
if (this.max !== null && targetVal > this.max) {
return false;
}
if (this.greaterOrEqual !== null && targetVal < this.greaterOrEqual) {
return false;
}
return !(this.lessOrEqual !== null && targetVal > this.lessOrEqual);
}
return false;
}
}
入力した文字/記号を防止するという点で、このすべての作品が、それは尊重数字に来るとき、ユーザはまだそれらの上に入力することでリミッタと、これを防ぐために、私の目的。 これにいくつかのSOスレッド(例:Don't allow typing numbers between max and min value)が見つかりましたが、多くの助けにはなりませんでした。
独自のバリデーターを書くのは簡単でしょうか? –
Validatorは間違った値 – markoffden
を入力防ぐことはできませんが、これはデータが後で動的 –