UNPKG

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
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'; @Component({ selector: 'app-register', standalone: true, imports: [ReactiveFormsModule, RouterModule, NgIf], templateUrl: './register.component.html', styleUrl: './register.component.css' }) 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.'; } }); } }