2017-02-15 15 views
3

Я пытаюсь проверить, совпадают ли эти два пароля. Я не получаю сообщение об ошибке, когда нет, но я не получаю сообщение об ошибке «Пароль должен соответствовать«.подтверждение пароля в угловом 2

Ниже мой DOM:

<div class="form-group" [ngClass]="{'has-error': formName.get('password').touched && 
       formName.get('password').hasError('invalidPassword')}"> 
    <label class="control-label">Password</label> 
    <input type="text" class="form-control" formControlName="password" name="password" required /> 
</div> 

<div class="form-group" [ngClass]="{'has-error': formName.get('confirmpassword').touched 
     && formName.get('confirmpassword').hasError('mismatchedPasswords')}"> 
    <label class="control-label">confirm password</label> 
    <input type="text" class="form-control" formControlName="confirmpassword" name="confirmpassword" required /> 
    <span class="help-block" *ngIf="formName.get('confirmpassword').touched 
      && formName.get('confirmpassword').hasError('mismatchedPasswords')"> 
      Password must match 
     </span> 
</div> 

Мой Компонентный класс о том, как я строю свою форму:

this.formName = this.fb.group({ 
     name: ["", [Validators.required]],    
     password: ["",[Validators.required, ValidationHelper.passwordValidator]], 
     confirmpassword: ["",Validators.required], 
     info: this.fb.group({ 
      acc: ["",[Validators.required, ValidationHelper.creditCardValidator]] 
     }) 
    },{ validator: ValidationHelper.matchPass}) 

И мой соответствующий пароль функции:

static matchPass = (control: AbstractControl) : {[key: string]: boolean} => {  
    let password = control.get('password'); 
    let confirmPassword = control.get('confirmpassword'); 
    return password.value === confirmPassword.value ? null : { 'mismatchedPasswords': true };   
} 

Функция получение вызова, я также получаю возвращаемое значение ... но почему мой контроль ввода пароля подтверждения не показывает ошибку или ctivitating его тег span.

ответ

3

Проблема с этими линиями в шаблоне:

formName.get('confirmpassword').hasError('mismatchedPasswords')

Вы претендуете валидатор к группе formName, но проверка на ошибки на confirmpassword FormControl.

Попробуйте использовать это в двух местах, где вы указываете mismatchedPasswords в своем шаблоне.

formName.hasError('mismatchedPasswords')

Смежные вопросы