如何在app.module.ts中重新组织导出的验证功能?

时间:2019-04-05 19:20:05

标签: angular angular7 angular-reactive-forms angular-validation

我是Angular开发的新手,一直想找出如何将验证功能从app.module.ts中移出到验证模块中的想法。

当放置在app.module.ts中时有效:

export function DateValidator(control: FormControl): ValidationErrors {
  if (!control.value) return null;
  let value = control.value instanceof Date ? control.value : Date.parse(control.value);
  return value instanceof Date ? null : { 'invalid': true };
}

但是我想将所有验证器都移到功能模块中。当我尝试执行此操作时,出现以下错误消息:

ERROR in src/app/validators/validators.module.ts(6,22): error TS2322: Type '(control: FormControl) => ValidationErrors' is not assignable to type 'any[] | Type<any>'.

这就是我想要做的:

validators / date.validator.ts:

import { FormControl, ValidationErrors } from "@angular/forms";

export function DateValidator(control: FormControl): ValidationErrors {
    if (!control.value) return null;
    let value = control.value instanceof Date ? control.value : Date.parse(control.value);
    return value instanceof Date ? null : { 'invalid': true };
}

validators / validators.module.ts文件如下所示。我知道这是不正确的,但是我不清楚何时需要导入vs声明以及何时导出或提供。不幸的是,文档没有为我清除所有这些内容。

import { NgModule } from '@angular/core';
import { CommonModule } from '@angular/common';
import { DateValidator } from './date.validator';

@NgModule({
  declarations: [],
  imports: [
    CommonModule,
    DateValidator
  ]
})
export class ValidatorsModule { }

0 个答案:

没有答案