Ich habe eine Situation, wo ich format
die Benutzereingabe und dann validate
es brauchen.Angular 2: benutzerdefinierte Form Validierung mit Eingabeformatierung
Ich verwende einen reactive form
und erstellt meine custom validation
wie unten (relevanten Teile) gesehen:
HTML:
<input type="text" formControlName="invoiceNumber" (blur)="formatInvoiceNumber()" class="form-control">
<div *ngIf="this.form.controls['invoiceNumber'].invalid && this.form.controls['invoiceNumber'].touched">Invalid Text</div>
Controller:
this.form = this.formBuilder.group({
'invoiceNumber': ['', validateInvoiceNumber()],
});
formatRoNumber() {
var invoiceNumber = this.form.controls['invoiceNumber'].value;
//format invoice number
}
Validator:
export function validateInvoiceNumber(): ValidatorFn {
return (control: AbstractControl): { [key: string]: any } => {
let invoiceNumber = control.value,
isValid = true;
//validate invoice number
return isValid ? null : { validInvoiceNumber: { valid: false } }
};
}
Ich komme in Timing-Probleme. Die Formatierung der Eingabe erfolgt nach der Validierung. Wie kann ich Angular
anweisen, die formatting
und dann validate
anzuwenden
Sieht aus wie Sie auf Blur formatieren ... so, wenn der Benutzer das Feld verlässt. Standardmäßig erfolgt die Validierung bei der Eingabe durch den Benutzer. Sie möchten also, dass es validiert wird, wenn der Benutzer das Feld verlässt? Ziehen Sie dann in Betracht, die integrierte Validierung nicht zu verwenden (sie nicht im FormBuilder anzugeben) und stattdessen sie direkt aufzurufen. Wenn Sie möchten, dass es nach der Formatierung auftritt, können Sie es von formatInvoiceNumber() aufrufen. – DeborahK
@DeborahK, ich verstehe. Ich hatte gehofft, dass es eine Möglichkeit gibt, dies mit FormBuilder zu erledigen ... oder die Formatierung auf andere Weise auszuführen. Danke – Thibs
Wenn Sie während der Eingabe formatieren möchten, können Sie eine Überwachung für valueChanges und format/validation hinzufügen. – DeborahK