$urlRouterProvider.otherwise / redirectTo en Angular moderno
otherwise pasa a ser una ruta comodín con path '**'. redirectTo acepta una ruta fija o, desde Angular 18, una función que puede usar inject().
Antes · AngularJS
$urlRouterProvider.when('', '/dashboard');
$urlRouterProvider.otherwise(function ($injector) {
var auth = $injector.get('AuthService');
return auth.isLoggedIn() ? '/not-found' : '/login';
});
// ngRoute
$routeProvider.otherwise({ redirectTo: '/dashboard' });Después · Angularexport const routes: Routes = [
{ path: '', pathMatch: 'full', redirectTo: 'dashboard' },
{ path: 'dashboard', component: DashboardComponent },
{ path: 'login', component: LoginComponent },
{ path: 'not-found', component: NotFoundComponent },
{
path: '**',
redirectTo: () => (inject(AuthService).isLoggedIn() ? '/not-found' : '/login'),
},
];Qué cambia
- El orden de las rutas importa: gana la primera coincidencia, así que la ruta comodín va al final.
- La redirección del path vacío necesita pathMatch: 'full'; sin eso la ruta coincide con cualquier URL.
- Una función de redirección recibe los parámetros y query params de la ruta que coincidió y devuelve una ruta o un UrlTree.
Consejo de migración. En una app híbrida, la ruta comodín es el punto donde las URL desconocidas se entregan al router legacy. Agrega la página de no encontrado en Angular solo cuando el router legacy ya no sea dueño de ninguna URL.
Relacionado
- ngRoute ($routeProvider, ng-view)
- lazy loaded states (ocLazyLoad, future states)
- $onInit / $onChanges / $onDestroy / $postLink
- named ui-view (multiple views)
¿Planeas una migración o una plataforma de microfrontends?
En una llamada de 20 minutos me cuentas tu situación y te digo cómo la abordaría. Si todavía no vale la pena, también te lo digo.
Escríbeme por LinkedIn