Frage zu Angular routing?

1 Antwort

Moin,

du kannst einen Guard benutzen, der checkt, welche teamsId du hast. Je nach teamsId leitet der dich dann entweder zur Players-Seite oder zur CreateEnemyTeam-Seite weiter. So musst du nicht den gleichen Pfad für zwei verschiedene Seiten verwenden.

Ich habe gerade keine Möglichkeit diese zu testen, bin auch nit tief in der Materie, allerdings kann es dir eventuell weiterhelfen.

Ich gebe dir mal ein Beispiel:

@Injectable({

providedIn: 'root'

})

export class RedirectTeamGuard implements CanActivate {

canActivate(

route: ActivatedRouteSnapshot,

state: RouterStateSnapshot

): Observable<boolean | UrlTree> | Promise<boolean | UrlTree> | boolean | UrlTree {

const teamsId = route.params['teamsId'];

if (someCondition(teamsId)) {

return this.router.createUrlTree(['/players', teamsId]);

} else {

return this.router.createUrlTree(['/create-enemy-team', teamsId]);

}

}

}

Füge dann diesen Guard in deiner Routing-Konfiguration hinzu:

{

path: ':teamsId',

canActivate: [RedirectTeamGuard],

loadChildren: () => import('./some-default.module').then(m => m.SomeDefaultPageModule),

}

Hier würde someCondition deine eigene Logik sein, um zu entscheiden, welche Seite geladen werden soll.

Woher ich das weiß:Berufserfahrung