Solucionado (ver solução)
Solucionado
(ver solução)
3
respostas

O código UserNotTakenValidatorService.checkUserNameTaken() comentado seria isso?

Fiz uma documentaçãozinha no código tentando compreender cada etapa. Seria isso?

    /**
     * Verifica se nome de usuário já está sendo usado no backend
     * @returns Uma função de validação SEMELHANTE ao que foi feito 
     *          em src\app\shared\validators\lower-case.validator.ts
     */
    checkUserNameTaken() {
        return (control: AbstractControl) => {
            return control.valueChanges // é um Observável com emissão a cada mudança no "control"
                /** 
                 * Transforma a emissão do Observável "a cada mudança" 
                 * em "a cada 300ms" 
                 */ 
                .pipe(debounceTime(300)) 
                /** 
                 * Pipe switchMap: "Troque para novo Observável"
                 * Transforma de "valueChanges" para um NOVO Observável 
                 * definido na função checkUserNameTaken(), onde este é 
                 * inscrito no lugar, substituindo a inscrição anterior.
                 */
                .pipe(switchMap(userName => { 
                    return this.signupService.checkUserNameTaken(userName);
                }))
                /**
                 * Transforma o booleano do Observável anterior
                 * em outro Observável que com um Obj ou null 
                 */
                .pipe(map(isTaken => isTaken ? { usernametaken: true} : null))
                /**
                 * Transforma o Observável anterior para considerar apenas a 
                 * primeira emissão (ou a primeira que satisfaça alguma função 
                 * condicional, se essa existir. No caso, não existe) 
                 */
                .pipe(first());
        }
    }
3 respostas

Fala ai Marcus, tudo bem? É isso ai, o código faz exatamente isso.

Espero ter ajudado.

solução!

É complicado de entender de primeira... mas... com um pouco de paciência e abstração, a coisa se revela \o/

kkkkk é isso ai, a persistência te leva ao sucesso.

Abraços e bons estudos.