2017-02-15 14 views
3

2つのパスワードが等しいかどうかを確認しようとしています。エラーメッセージが表示されないが、エラーメッセージが表示されない。"パスワードは一致する必要があります"。以下は角度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> 

マイComponentクラス:

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 };   
} 

関数であります呼び出されると、私は戻り値も取得しています...しかし、なぜ私のパスワード入力コントロールがエラーを表示していないか、またはスパンタグを付加します。

答えて

3

問題は、テンプレートに次の行を使用することです:あなたはグループformNameにバリデータを適用するが、confirmpassword formControl上のエラーをチェックしている

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

テンプレートのmismatchedPasswordsを確認する2か所でこれをお試しください。

formName.hasError('mismatchedPasswords')

関連する問題