Ich habe einen benutzerdefinierten Validator, der überprüft, ob ein Eingabefeld eine Nummer eingegeben hat. Angular 2 benutzerdefinierte Validierung für Zahlen und Dezimalwerte
Der Code sieht so aus:
import { AbstractControl, ValidatorFn } from '@angular/forms';
export class NumberValidators {
static isNumberCheck(): ValidatorFn {
return (c: AbstractControl): {[key: string]: boolean} | null => {
if (c.value !== undefined && (isNaN(c.value))) {
return { 'value': true };
}
return null;
};
}
}
Aber die Frage, die ich habe, ist, wenn ich ein Dezimalwert eingeben, wird es den Validierungs-Flag erhöhen, die ich nicht wollen. Ich möchte, dass das Eingabefeld ganze Zahlen und Dezimalzahlen hat. Kann mir bitte jemand helfen, das richtig zu machen?
unter meinem Template-Code ist parsleyjs für die Validierung
<div class="form-group row">
<label for="upperbeltposition" class="col-md-6 col-form-label">Upper Belt Position (mm) <span class="required">*</span></label>
<div class="col-md-5">
<input class="form-control input-transparent " id="upperbeltposition" type="text" formControlName="upperbeltposition" data-parsley-trigger="blur"
required="required" data-parsley-type="number"/>
</div>
</div>
<div class="form-group row">
<label for="platformxposition" class="col-md-6 col-form-label">Platform X Position (mm) <span class="required">*</span></label>
<div class="col-md-5">
<input class="form-control input-transparent " id="platformxposition" type="text" formControlName="platformxposition" data-parsley-trigger="blur"
required="required" data-parsley-type="number"/>
</div>
</div>
<div class="form-group row">
<label for="platformyposition" class="col-md-6 col-form-label">Platform Y Position (mm) <span class="required">*</span></label>
<div class="col-md-5">
<input class="form-control input-transparent " id="platformyposition" type="text" formControlName="platformyposition" data-parsley-trigger="blur"
required="required" data-parsley-type="number"/>
</div>
</div>
und in meiner Komponente I Reactive Form bin mit und unten ist mein Code
upperbeltposition: ['', [Validators.required, NumberValidators.isNumberCheck]],
platformxposition: ['', [Validators.required, NumberValidators.isNumberCheck]],
platformyposition: ['', [Validators.required, NumberValidators.isNumberCheck]]
danke !!
Es gibt eine ausführliche Beschreibung über die Verwendung von NaN hier: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/isNaN Etwas kann da sein sei hilfreich. Und gemäß dieser Referenz sollte isNaN für Dezimalwerte false zurückgeben. – DeborahK
Also, ich muss das isNaN entfernen, um ganze Zahlen und Dezimalzahlen zu ermöglichen – ZAJ