Após receber o resultado do input no formulário de registro devemos retornar nulo se o nome de usuário pode ser usado ou um objeto com o valor configurado para true se já estiver em uso. Porém não estou entendendo muito bem o método pipe, switchMap e map.
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());
}
}
No método do signupService também gostaria de saber o que ele retorna. Ele faz uma requisição http com o método get para a api no backend, certo. Porém, essa rota user/exists eu acredito que ela não exista como a api faz para receber isso?
checkUserNameTaken(userName: string) {
return this.http.get(API + '/user/exists/' + userName)
}