【发布时间】:2016-12-04 14:58:57
【问题描述】:
我已经编写了一个这样的自定义验证指令:
const DURATION_VALIDATOR = new Provider(
NG_VALIDATORS,
{useExisting: forwardRef(() => DurationDirective), multi: true}
);
@Directive({
selector: '[ngModel][duration], [formControl][duration]',
providers: [{
provide: NG_VALIDATORS,
useExisting: forwardRef(() => DurationDirective),
multi: true }]
})
export class DurationDirective implements Validator{
constructor(public model:NgModel){
console.error('init')
}
validate(c:FormControl) {
console.error('validate')
return {'err...':'err...'};
}
}
我的 Html 看起来像这样:
<input
type="text"
[(ngModel)]="preparation.duration"
duration
required
>
我的问题是,当验证器被初始化时,即“init”被记录到控制台,验证函数从未被调用,即“验证”在输入字段时从未被记录到控制台。由于验证器已初始化,我假设我正确地“连接”了所有内容。那么缺少什么?
【问题讨论】:
标签: forms validation typescript angular custom-validators