我有一种情况,我需要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