Я делаю свои первые шаги в Angular и должен был сделать собственный максимальный валидатор для числового поля в форме шаблона. Вот оно:
import {Directive, Input} from '@angular/core';
import {AbstractControl, NG_VALIDATORS, ValidationErrors, Validator, ValidatorFn} from '@angular/forms';
@Directive({
selector: '[appMaximumValue]',
providers: [{provide: NG_VALIDATORS, useExisting: MaximumValueDirective, multi: true}]
})
export class MaximumValueDirective implements Validator {
@Input('appMaximumValue') maximumValue: number;
constructor() {
}
validate(control: AbstractControl): ValidationErrors | null {
return this.maximumValue ? maximumValueValidator(this.maximumValue)(control) : null;
}
}
export function maximumValueValidator(minimum: number): ValidatorFn {
return (control: AbstractControl): { [key: string]: any } | null => {
return control.value > minimum ? {'maximumValue': {value: control.value}} : null;
};
}
Подумав об этом, я обнаружил, что он также работает без функции экспорта:
import {Directive, Input} from '@angular/core';
import {AbstractControl, NG_VALIDATORS, ValidationErrors, Validator, ValidatorFn} from '@angular/forms';
@Directive({
selector: '[appMaximumValue]',
providers: [{provide: NG_VALIDATORS, useExisting: MaximumValueDirective, multi: true}]
})
export class MaximumValueDirective implements Validator {
@Input('appMaximumValue') maximumValue: number;
constructor() {
}
validate(control: AbstractControl): ValidationErrors | null {
return Number(control.value) > this.maximumValue ? {'maximumValue': {value: control.value}} : null;
}
}
Итак, мой вопрос: в чем причина этой функции экспорта