diff --git a/apps/angular/60-async-redirect/src/app/dashboard.ts b/apps/angular/60-async-redirect/src/app/dashboard.ts index 377c5e81d..47f0764e4 100644 --- a/apps/angular/60-async-redirect/src/app/dashboard.ts +++ b/apps/angular/60-async-redirect/src/app/dashboard.ts @@ -1,6 +1,5 @@ -import { ChangeDetectionStrategy, Component, inject } from '@angular/core'; -import { Router, RouterLink, RouterOutlet } from '@angular/router'; -import { UserProfileService } from './user-profile.service'; +import { ChangeDetectionStrategy, Component } from '@angular/core'; +import { RouterLink, RouterOutlet } from '@angular/router'; @Component({ selector: 'app-dashboard', @@ -13,7 +12,7 @@ import { UserProfileService } from './user-profile.service'; @@ -22,13 +21,4 @@ import { UserProfileService } from './user-profile.service'; changeDetection: ChangeDetectionStrategy.OnPush, imports: [RouterOutlet, RouterLink], }) -export class Dashboard { - private router = inject(Router); - private userProfile = inject(UserProfileService); - - navigate() { - this.userProfile.getProfile().subscribe((profile) => { - void this.router.navigate(['/', profile]); - }); - } -} +export class Dashboard {} diff --git a/apps/angular/60-async-redirect/src/app/routes.ts b/apps/angular/60-async-redirect/src/app/routes.ts index 4a0f11835..dd9dde67e 100644 --- a/apps/angular/60-async-redirect/src/app/routes.ts +++ b/apps/angular/60-async-redirect/src/app/routes.ts @@ -1,9 +1,26 @@ -import { Routes } from '@angular/router'; +import { inject } from '@angular/core'; +import { Router, Routes } from '@angular/router'; +import { map } from 'rxjs'; import { AdminPage } from './admin-page'; import { App } from './app'; import { Dashboard } from './dashboard'; import { ProfilePage } from './profile-page'; import { UserPage } from './user-page'; +import { UserProfileService } from './user-profile.service'; + +const redirectTo = () => { + const router = inject(Router); + + return inject(UserProfileService) + .getProfile() + .pipe( + map((profile) => + profile === 'admin' + ? router.createUrlTree(['/admin']) + : router.createUrlTree(['/user']), + ), + ); +}; export const routes: Routes = [ { @@ -12,6 +29,10 @@ export const routes: Routes = [ children: [ { path: '', pathMatch: 'full', component: Dashboard }, { path: 'profile', component: ProfilePage }, + { + path: 'navigateTo', + redirectTo, + }, { path: 'admin', component: AdminPage }, { path: 'user', component: UserPage }, ],