我已經定義了一個用於驗證pan卡號的自定義驗證器(https://en.wikipedia.org/wiki/Permanent_account_number)。角度4:自定義驗證器未被調用
function validatePan(): ValidatorFn {
return (c: AbstractControl) => {
var regpan = /^([a-zA-Z]){5}([0-9]){4}([a-zA-Z]){1}?$/;
if (!regpan.test(c.value)) {
return {
validatepan: {
valid: false
}
};
} else {
return null;
}
}
}
@Directive({
selector: '[validatepan][ngModel], [validatepan][formControlName], [validatepan][formControl]',
providers: [
{ provide: NG_VALIDATORS, useExisting: forwardRef(() => PanValidator), multi: true }
]
})
export class PanValidator implements Validator{
validator: ValidatorFn;
constructor() {
this.validator = validatePan();
}
validate(c: FormControl) {
console.log('here');
return this.validator(c);
}
}
我已經註冊指令在
declarations: [
....
PanValidator
],
我使用的指令如下
<input type="text" class="form-control" name="testpan" id="field_testpan"
[(ngModel)]="testval.testpan"
validatepan />
模塊的聲明部分,但它既不初始化指令,也沒有調用驗證功能。
感謝您的回覆。我也嘗試過這個。但結果相同。 –
@PrashanthRaghu你可以創建plunker,該鏈接有一個工作範例,請遵循,可能有幫助 –
你得到的任何錯誤 –