Я следую документации по https://angular.io/guide/form-validation#custom-validators
Я добавил директиву в свой проект, используя ng generate
import { Directive} from '@angular/core';
import { NG_VALIDATORS, Validator, AbstractControl, ValidationErrors } from '@angular/forms';
@Directive({
selector: '[appForbiddenRisInternalIdValidator]',
providers: [{provide: NG_VALIDATORS, useExisting: 'ForbiddenRisInternalIdValidatorDirective', multi: true}]
})
export class ForbiddenRisInternalIdValidatorDirective implements Validator {
validate(control: AbstractControl): ValidationErrors {
console.log('Validating');
return null;
}
}
, которая также добавила ее в мой app.module.как я и ожидал.
import { ForbiddenRisInternalIdValidatorDirective } from './validators/forbidden-ris-internal-id-validator.directive';
@NgModule({
declarations: [
AppComponent,
..........,
ForbiddenRisInternalIdValidatorDirective
],
Документация теперь просто говорит, чтобы сделать эту работу, мне просто нужно добавить селектор в форму, и что часть директивы провайдера добавит этот валидатор в список валидаторов, которые будутзапустите мою форму.
Я пробовал это в своем теге формы.
<form #RBoxAddEdit='ngForm' (submit)='updateBox(RBoxAddEdit)' appForbiddenRisInternalIdValidator>
Я также пробовал это непосредственно во вводе, к которому я пытаюсь добавить проверку.
<input appForbiddenRisInternalIdValidator #customValidation = 'ngModel' maxlength="45" id="risinternalId" name="risnternalId" matInput required [(ngModel)]='boxEdit.risinternalId' placeholder="RIS ID (RBXXXX)">
Однако, куда бы я ни добавил это, я получаю нулевую ошибку инжектора.
ERROR Error: StaticInjectorError(AppModule)[ForbiddenRisInternalIdValidatorDirective]:
StaticInjectorError(Platform: core)[ForbiddenRisInternalIdValidatorDirective]:
NullInjectorError: No provider for ForbiddenRisInternalIdValidatorDirective!
Кажется, я что-то упустил.Есть идеи, что я пропустил?