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.