Validation 带函数的验证指令-好主意?

Validation 带函数的验证指令-好主意?,validation,angular,Validation,Angular,上下文:我正在为我的表单2应用程序添加验证,该应用程序使用这种方法。这意味着我需要为自定义验证规则编写指令 虽然一些验证器相当常见,可以跨组件重用(一个日期值先于另一个日期值),但不可避免地存在仅特定于某些组件的“一次性”验证。为其中的每一项创建自定义验证指令似乎有些过分 问题: 我提出了一个指令,它采用验证器fn(下面的代码)。这允许在组件类中指定验证函数,并跨组件重用该指令。这似乎工作得很好,但我有一种不好的感觉,这是“太容易了”-一定有一个原因,为什么这不是内置在Angular 2 For

上下文:我正在为我的表单2应用程序添加验证,该应用程序使用这种方法。这意味着我需要为自定义验证规则编写指令

虽然一些验证器相当常见,可以跨组件重用(一个日期值先于另一个日期值),但不可避免地存在仅特定于某些组件的“一次性”验证。为其中的每一项创建自定义验证指令似乎有些过分

问题: 我提出了一个指令,它采用
验证器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; }
}