jangular-cli
Version:
A powerful CLI tool for rapidly bootstrapping Angular 17 & Spring Boot (Java 21) applications with integrated security, services, and enterprise-ready best practices.
74 lines (63 loc) • 2.21 kB
text/typescript
import { Component, OnInit } from '@angular/core';
import { FormBuilder, FormGroup, ReactiveFormsModule, Validators } from '@angular/forms';
import { AuthService } from '../../../services/auth/auth.service';
import { Router, RouterModule } from '@angular/router';
import { NgIf } from '@angular/common';
export class RegisterComponent implements OnInit {
registerForm!: FormGroup;
errorMessage: string = '';
isLoading: boolean = false;
constructor(
private formBuilder: FormBuilder,
private authService: AuthService,
private router: Router
) { }
ngOnInit(): void {
// Redirect if already logged in
if (this.authService.isAuthenticated()) {
this.router.navigate(['/dashboard']);
}
this.registerForm = this.formBuilder.group({
username: ['', [Validators.required]],
firstName: ['', [Validators.required]],
lastName: ['', [Validators.required]],
email: ['', [Validators.required, Validators.email]],
password: ['', [Validators.required, Validators.minLength(6)]],
passwordConfirm: ['', [Validators.required]]
}, {
validators: this.passwordMatchValidator
});
}
passwordMatchValidator(form: FormGroup) {
const password = form.get('password')?.value;
const passwordConfirm = form.get('passwordConfirm')?.value;
return password === passwordConfirm ? null : { passwordMismatch: true };
}
onSubmit(): void {
if (this.registerForm.invalid) {
return;
}
this.isLoading = true;
this.errorMessage = '';
this.authService.register(this.registerForm.value).subscribe({
next: (response) => {
this.isLoading = false;
// Redirect to login after successful registration
this.router.navigate(['/auth/login'], {
queryParams: { registered: 'true' }
});
},
error: (error) => {
this.isLoading = false;
this.errorMessage = error.error?.message || 'Registration failed. Please try again.';
}
});
}
}