【发布时间】:2018-01-19 12:43:25
【问题描述】:
我已经为泛卡号验证定义了一个自定义验证器(https://en.wikipedia.org/wiki/Permanent_account_number)。
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 />
但它既没有初始化指令也没有调用验证函数。
【问题讨论】:
-
在您的 validatePan 函数中,您将返回一个 ValidatorFn,其类型应为 ValidatorErrors。但在你的功能中,它什么都没有。尝试在 Validaton 函数中添加返回类型的 ValidatorError;
标签: angular validation angular-directive