Код доступен на https://stackblitz.com/edit/angular-jx7fdu
Это форма регистрации, и я пытаюсь создать собственный валидатор. Функции проверки находятся в helper.service.ts. Я хочу проверить поле подтверждения пароля другим способом и создал функцию validateVerifyPassword в helper.service.ts. В то время как все другие поля проверяются с использованием функций Validators .... в signup-component.components.ts, я хочу проверить поле подтверждения пароля с помощью пользовательской директивы в signup-component.component.html.
другие поля
lastName:[null,[Validators.required,Validators.pattern(/[A-Za-z]+/)]],
email:[null,[Validators.required,Validators.pattern(this.EMAIL_PATTERN)]],
password:[null,[Validators.required,Validators.minLength(8),this.helper.validatePassword]]
поле подтверждения пароля
<input id="verify-password" type="password" class="form-control" formControlName="confirmPassword" [ngClass]="validateField('confirmPassword')" ngModel validateVerifyPassword >
Но я вижу ошибку времени выполнения в окне консоли. Что я делаю неправильно? Ошибка
preview-1f727e0cbae2a3ba41a0a.js:1 ERROR TypeError: Cannot read property 'validate' of undefined
at normalizeValidator (normalize_validator.ts:13)
at Array.map (<anonymous>)
at composeValidators (shared.ts:144)
at FormControlName.get [as validator] (form_control_name.ts:226)
at setUpControl (shared.ts:39)
at FormGroupDirective.addControl (form_group_directive.ts:100)
at FormControlName._setUpControl (form_control_name.ts:245)
at FormControlName.ngOnChanges (form_control_name.ts:203)
at checkAndUpdateDirectiveInline (provider.ts:201)
at checkAndUpdateNodeInline (view.ts:429)
console.(anonymous function) @ preview-1f727e0cbae2a3ba41a0a.js:1
View_SignupComponentComponent_0 @ SignupComponentComponent.html:33
proxyClass @ metadata_resolver.ts:91
DebugContext_.logError @ services.ts:598
`ERROR CONTEXT DebugContext_ {view: {…}, nodeIndex: 54, nodeDef: {…}, elDef: {…}, elView: {…}}
одна из строк ошибок указывает на View_SignupComponentComponent_0 @ SignupComponentComponent.html:33
, где я использую директиву <input id="verify-password" type="password" class="form-control" formControlName="confirmPassword" [ngClass]="validateField('confirmPassword')" ngModel validateVerifyPassword >
Я подозреваю, что проблема может заключаться в том, что моя форма является формой Reactive
, но я полагаю, что я мог бы использовать пользовательские проверки с использованием Директив только для форм Template
. Это тот случай?