Async Validator not returning error object

745 Views Asked by At

I am trying to check old password match using async validator and error object is not returned even if the passwords don't match.

password-validator.ts

export class PasswordValidators{
    static checkOldPassword(service: PasswordService){
    return (control: AbstractControl) => {
      return service.checkPasswordMatch(control.value).map(response => {
        return response ? null : {wrongOldPassword: true};
      });
    }
}

password.service.ts

export class PasswordService {
    actualOldPassword:string = 'abc123';
    checkPasswordMatch(oldPassword: string){
        return new Observable(observer => {
           observer.next(this.actualOldPassword);
           }).map( res => res!==oldPassword?0:1);
    }
}

change-password.component.ts

constructor(fb: FormBuilder, service: PasswordService) {
    this.form = fb.group({
       oldPassword: ['', Validators.required, 
       PasswordValidators.checkOldPassword(service)],
    });
}

The error object

{wrongOldPassword: true}

is never returned

0

There are 0 best solutions below