mam niestandardową walidatora, który sprawdza, czy pole wejściowe ma liczbę wprowadzoną do niego. kątowa 2 zwyczaj sprawdzania poprawności numerów i wartości dziesiętnych
Kod wygląda tak:
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;
};
}
}
Ale problem mam jest kiedy wprowadzić wartość dziesiętną jest podniesienie flagi walidacji, które nie chcę. Chcę, aby pole wejściowe zawierało liczby całkowite i liczby dziesiętne. Czy ktoś może mi pomóc to poprawić.
Poniżej jest mój kod szablonu za pomocą parsleyjs walidacji
<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>
iw moim Komponentu używam formy biernej i poniżej jest mój kod
upperbeltposition: ['', [Validators.required, NumberValidators.isNumberCheck]],
platformxposition: ['', [Validators.required, NumberValidators.isNumberCheck]],
platformyposition: ['', [Validators.required, NumberValidators.isNumberCheck]]
dzięki!
Istnieje obszerna writeup na użyciu NaN tutaj: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/isNaN Coś tam maja być pomocnym. I zgodnie z tym odniesieniem, isNaN powinien zwracać wartość false dla wartości dziesiętnych. – DeborahK
Więc muszę wyjąć że isNaN aby umożliwić liczbami i cyfry dziesiętne – ZAJ