Ainda não tem acesso? Estude com a gente! Matricule-se
Ainda não tem acesso? Estude com a gente! Matricule-se

Form com validação assíncrona sempre no status Pending

Implementando o validador assíncrono abaixo:

checkUserNameTaken() {
        return (control: AbstractControl) => {
            return control
                .valueChanges
                .pipe(debounceTime(300))
                .pipe(switchMap(userName =>
                    this._signupService.checkUserNameTaken(userName)
                ))
                .pipe(map(isTaken => isTaken ? { usernametaken: true } : null))
                .pipe(first());
        }
    }

O botão de submit nunca ativa pois o status do form sempre fica como pending

<button [disabled]="form.invalid || form.pending" class="btn btn-primary btn-block">Register</button>

A função do service retorna o observable

    checkUserNameTaken(userName: string) {
        return this._http.get(`${API_URL}/user/exists/${userName}`);
    }

Não tem nenhum erro no console ou de compilação.

3 respostas

Fala ai Renato, tudo bem? Olhando os códigos parecem estar corretos, posso te pedir um favor? Compartilha o projeto comigo, assim eu consigo simular o problema e analisá-lo com mais calma por aqui.

Pode compartilhar através do Github ou Google Drive (zipado).

Espero ter ajudado.

Fala ai Renato, consegue subir no Github? O link da Google está acusando que o arquivo zip possui vírus.

Desculpa a demora, estava bem corrido as coisas por aqui.

Fico no aguardo.