2
respostas

Expected validator to return Promise or Observable.

Executei o projeto e me deparei com o seguinte erros:

ERROR Error: Expected validator to return Promise or Observable.
ERROR Error: formGroup expects a FormGroup instance. Please pass one in.

Acredito que tenha algum erro no código a baixo, pois quando eu removo: [this.usuarioExistenteService.usuarioJaExiste()]

Do novo-usuario.componente o código funciona normalmente

import { NovoUsuarioService } from './novo-usuario.service';
import { Injectable } from '@angular/core';
import { AbstractControl } from '@angular/forms';
import {first, map, switchMap } from 'rxjs/operators';

@Injectable({
  providedIn: 'root'
})
export class UsuarioExisteService {

  constructor(private novoUsuarioService:NovoUsuarioService) { }

  usuarioJaExiste(){
    return (control:AbstractControl)=>{
      return control.valueChanges.pipe(
        switchMap((nomeUsuario)=> this.novoUsuarioService
          .verificaUsuarioExistentente(nomeUsuario))
      ),
      map((usuarioExiste) =>
        (usuarioExiste ? {usuarioExistente: true} : null)
      ),
      first()
    }
  }
}
2 respostas

Somente erro no pipe.

usuarioJaExiste(){
    return (control:AbstractControl)=>{
      return control.valueChanges.pipe(
        switchMap(
          (nomeUsuario) => this.novoUsuarioService.verificaUsuarioExistentente(nomeUsuario)
        ),
        map((usuarioExiste) =>
          usuarioExiste?{ usuarioExistente: true }:null
        ),
        first()
        // encerrar fluxo da validação
      );
    }
  }

Olá, Renato! Tudo bem?

Que bom que conseguiu resolver seu problema!

Bons estudos!