我有一種情況,我需要format
用戶輸入,然後validate
它。Angular 2:自定義表單驗證輸入格式
我使用的是reactive form
並創建了custom validation
如下(相關部分)看出:
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>
控制器:
this.form = this.formBuilder.group({
'invoiceNumber': ['', validateInvoiceNumber()],
});
formatRoNumber() {
var invoiceNumber = this.form.controls['invoiceNumber'].value;
//format invoice number
}
驗證:
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 } }
};
}
我遇到了計時問題。輸入的格式化發生在驗證之後。
我該如何告訴Angular
應用formatting
然後validate
?
貌似要格式化的模糊......所以,當用戶離開現場。默認情況下,驗證在用戶輸入時發生。所以你希望它在用戶離開該領域時進行驗證?然後考慮不使用內置驗證(不在FormBuilder中指定它),而是直接調用它。如果您希望在格式化後發生這種情況,您可以從formatInvoiceNumber()中調用它。 – DeborahK
@DeborahK,我明白了。我希望有一種方法可以使這個工作與FormBuilder ...或以其他方式運行格式。謝謝你 – Thibs
如果你想格式化,你可以在valueChanges上添加一個手錶,然後格式化/驗證。 – DeborahK