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

Mensagem de sucesso para o SignUp

Eu quis criar um componente para exibir mensagens customizadas para o usuário. Queria uma opinião se fiz certo e se possível alguma sugestão de melhorias.

Eu criei o componente de alertas assim:

<div class="alert alert-{{type}}" role="alert">{{ alertText }}</div>
import { Component, Input } from '@angular/core';

@Component({
    selector: 'ap-alerts',
    templateUrl: './alerts.component.html'
})
export class AlertsComponents {

    @Input() type = '';
    @Input() alertText = '';
}

Fazendo esses binds para que possa customizar o tipo de alerta e a mensagem aonde for usar o componente.

Aí no signup component eu fiz o seguinte:

//código omitido

export class SignUpComponent implements OnInit {

    signupForm: FormGroup;
    signupSuccess = false;
    alertText = '';
    type = '';

//código omitido

this.signUpService
            .signup(newUserDto)
            .subscribe(() => {

                this.alertText = 'SignUp successfully, please login.'
                this.type = 'success';
                this.signupSuccess = true

                setTimeout(() => { this.router.navigate(['']) }, 3000),

                err => console.log(err)
            });

Após o subscribe, definindo a mensagem o seu tipo e um atributo booleano para renderizar o html com ngIf na view. Além de setar um timer para redirecionar para a view de login.

O uso do compoente na view do signup:

<ap-alerts *ngIf="signupSuccess" [type]="type" [alertText]="alertText"></ap-alerts>

Por fim, gostaria de uma sugestão se está legal ou posso melhorar em algo. Desde já agradeço.

3 respostas
solução!

Fala ai José, tudo bem? Eu achei a solução muito boa, apenas como sugestão eu deixaria o type na classe AlertsComponents com um valor padrão (o tipo mais comum de uso).

Espero ter ajudado.

Obrigado pela dica Matheus!

Magina José, sempre que precisar não deixe de criar suas dúvidas.

Abraços e bons estudos.