Как реорганизовать экспортированные функции проверки в app.module.ts? - PullRequest
0 голосов
/ 05 апреля 2019

Я новичок в разработке на 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 выглядит следующим образом.Я знаю, что это не правильно, но мне неясно, когда мне нужно импортировать и объявить, а когда экспортировать или предоставить.К сожалению, документация не проясняет для меня ничего подобного.

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

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