navigate user after successful registration.

- data is passed via state
This commit is contained in:
kusowl 2026-02-23 16:10:59 +05:30
parent 4aba99fcb5
commit aee7e4fd89
4 changed files with 39 additions and 9 deletions

View File

@ -1,4 +1,11 @@
<section class="my-10 sm:my-20 flex justify-center items-center"> @if (successMessage) {
<div
class="px-4 py-3 mb-8 bg-teal-100 rounded-lg text-teal-800 text-sm mt-10 max-w-11/12 sm:max-w-8/12 mx-auto"
>
<p>{{successMessage}}</p>
</div>
}
<section class="my-5 sm:my-10 flex justify-center items-center">
<article class="card max-w-11/12 sm:max-w-8/12 grid md:grid-cols-2 lg:grid-cols-3 gap-4"> <article class="card max-w-11/12 sm:max-w-8/12 grid md:grid-cols-2 lg:grid-cols-3 gap-4">
<div class="md:col-span-1 lg:col-span-2"> <div class="md:col-span-1 lg:col-span-2">
<img <img
@ -27,7 +34,9 @@
<button type="submit" class="btn btn-black py-2">Login</button> <button type="submit" class="btn btn-black py-2">Login</button>
</form> </form>
<a href="" class="text-xs text-gray-800 text-center w-full block hover:text-teal-600" <a
routerLink="/register"
class="text-xs text-gray-800 text-center w-full block hover:text-teal-600"
>New User ? Sign Up</a >New User ? Sign Up</a
> >
</article> </article>

View File

@ -1,9 +1,18 @@
import { Component } from "@angular/core"; import { Component } from "@angular/core";
import { Router, RouterLink } from "@angular/router";
@Component({ @Component({
selector: "app-login", selector: "app-login",
imports: [], imports: [RouterLink],
templateUrl: "./login.html", templateUrl: "./login.html",
styleUrl: "./login.css", styleUrl: "./login.css",
}) })
export class Login {} export class Login {
successMessage: string | undefined;
constructor(private router: Router) {
const navigator = this.router.currentNavigation();
const state = navigator?.extras.state as { message?: string };
this.successMessage = state?.message;
}
}

View File

@ -18,7 +18,7 @@
> >
<fieldset class="fieldset"> <fieldset class="fieldset">
<legend class="fieldset-legend">Name*</legend> <legend class="fieldset-legend">Name*</legend>
<input type="text" class="input" formControlName="name" placeholder="Jhon Doe" /> <input type="text" name="name" class="input" formControlName="name" placeholder="Jhon Doe" />
<app-error fieldName="name" [control]="registerForm.get('name')" /> <app-error fieldName="name" [control]="registerForm.get('name')" />
</fieldset> </fieldset>
@ -26,6 +26,7 @@
<legend class="fieldset-legend">Mobile Number*</legend> <legend class="fieldset-legend">Mobile Number*</legend>
<input <input
type="text" type="text"
name="mobile_number"
class="input" class="input"
formControlName="mobile_number" formControlName="mobile_number"
placeholder="+X1 XXXXXXXXXX" placeholder="+X1 XXXXXXXXXX"
@ -42,7 +43,13 @@
<fieldset class="fieldset"> <fieldset class="fieldset">
<legend class="fieldset-legend">City*</legend> <legend class="fieldset-legend">City*</legend>
<input type="text" class="input" formControlName="city" placeholder="Your city name" /> <input
type="text"
name="city"
class="input"
formControlName="city"
placeholder="Your city name"
/>
<app-error fieldName="city" [control]="registerForm.get('city')" /> <app-error fieldName="city" [control]="registerForm.get('city')" />
</fieldset> </fieldset>
@ -67,7 +74,9 @@
<button type="submit" [disabled]="registerForm.invalid" class="btn btn-black py-2 w-full"> <button type="submit" [disabled]="registerForm.invalid" class="btn btn-black py-2 w-full">
Register Register
</button> </button>
<a href="" class="text-xs text-gray-800 text-center w-full block hover:text-teal-600" <a
routerLink="/login"
class="text-xs text-gray-800 text-center w-full block hover:text-teal-600"
>Already have an account ? Login</a >Already have an account ? Login</a
> >
</div> </div>

View File

@ -3,15 +3,17 @@ import { FormControl, FormGroup, ReactiveFormsModule, Validators } from "@angula
import { AuthService } from "../../services/auth-service"; import { AuthService } from "../../services/auth-service";
import { RegisterUserRequest } from "../../../../core/models/user.model"; import { RegisterUserRequest } from "../../../../core/models/user.model";
import { Error } from "../../../../shared/components/error/error"; import { Error } from "../../../../shared/components/error/error";
import { Router, RouterLink } from "@angular/router";
@Component({ @Component({
selector: "app-register", selector: "app-register",
imports: [ReactiveFormsModule, Error], imports: [ReactiveFormsModule, Error, RouterLink],
templateUrl: "./register.html", templateUrl: "./register.html",
styleUrl: "./register.css", styleUrl: "./register.css",
}) })
export class Register { export class Register {
authService = inject(AuthService); authService = inject(AuthService);
router = inject(Router);
errors = signal<string[]>([]); errors = signal<string[]>([]);
registerForm = new FormGroup({ registerForm = new FormGroup({
@ -31,7 +33,8 @@ export class Register {
} }
this.authService.register(this.registerForm.value as RegisterUserRequest).subscribe({ this.authService.register(this.registerForm.value as RegisterUserRequest).subscribe({
next: () => console.log("success"), next: () =>
this.router.navigate(["/login"], { state: { message: "Registration successful!" } }),
error: (error) => { error: (error) => {
const errors: Record<number, string[]> = error?.error?.errors || {}; const errors: Record<number, string[]> = error?.error?.errors || {};
const errorMessages: string[] = Object.values(errors).flat(); const errorMessages: string[] = Object.values(errors).flat();