Validation 带函数的验证指令-好主意?
上下文:我正在为我的表单2应用程序添加验证,该应用程序使用这种方法。这意味着我需要为自定义验证规则编写指令 虽然一些验证器相当常见,可以跨组件重用(一个日期值先于另一个日期值),但不可避免地存在仅特定于某些组件的“一次性”验证。为其中的每一项创建自定义验证指令似乎有些过分 问题: 我提出了一个指令,它采用Validation 带函数的验证指令-好主意?,validation,angular,Validation,Angular,上下文:我正在为我的表单2应用程序添加验证,该应用程序使用这种方法。这意味着我需要为自定义验证规则编写指令 虽然一些验证器相当常见,可以跨组件重用(一个日期值先于另一个日期值),但不可避免地存在仅特定于某些组件的“一次性”验证。为其中的每一项创建自定义验证指令似乎有些过分 问题: 我提出了一个指令,它采用验证器fn(下面的代码)。这允许在组件类中指定验证函数,并跨组件重用该指令。这似乎工作得很好,但我有一种不好的感觉,这是“太容易了”-一定有一个原因,为什么这不是内置在Angular 2 For
验证器fn
(下面的代码)。这允许在组件类中指定验证函数,并跨组件重用该指令。这似乎工作得很好,但我有一种不好的感觉,这是“太容易了”-一定有一个原因,为什么这不是内置在Angular 2 Forms模块中
有人知道这样一个指令是好主意/坏主意的原因吗
指令代码:
export const FUNCTION_VALIDATOR: any = {
provide: NG_VALIDATORS,
useExisting: forwardRef(() => FunctionValidator),
multi: true
};
@Directive({
selector: '[validationFn][formControlName],[validationFn][formControl],[validationFn][ngModel]',
providers: [FUNCTION_VALIDATOR],
host: {'[attr.validationFn]': 'validationFn ? validationFn : null'}
})
export class FunctionValidator implements Validator, OnChanges {
private validator: ValidatorFn;
private onChange: () => void;
@Input() validationFn: ValidatorFn;
private createValidator() { this.validator = this.validationFn; }
ngOnChanges(changes: SimpleChanges) {
if (changes['validationFn']) {
this.createValidator();
if (this.onChange) this.onChange();
}
}
validate(c: AbstractControl): {[key: string]: any} {
return this.validator ? this.validator(c) : null;
}
registerOnChange(fn: () => void) { this.onChange = fn; }
}