我是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 { }