ui-sref / ui-sref-active en Angular moderno
ui-sref pasa a ser routerLink y ui-sref-active pasa a ser routerLinkActive. Los enlaces apuntan a rutas de URL en vez de nombres de estado.
Antes · AngularJS
<nav>
<a ui-sref="users" ui-sref-active="active">Users</a>
<a ui-sref="userDetail({ id: user.id })">{{ user.name }}</a>
<a ui-sref="reports({ year: 2024 })" ui-sref-active-eq="active">Reports</a>
</nav>Después · Angular@Component({
selector: 'app-nav',
imports: [RouterLink, RouterLinkActive],
template: `
<a routerLink="/users" routerLinkActive="active">Users</a>
<a [routerLink]="['/users', user().id]">{{ user().name }}</a>
<a routerLink="/reports" [queryParams]="{ year: 2024 }"
routerLinkActive="active" [routerLinkActiveOptions]="{ exact: true }">Reports</a>
`,
})
export class NavComponent {
user = input.required<User>();
}Qué cambia
- Los parámetros del estado pasan a ser segmentos del arreglo del enlace: ['/users', user.id].
- Los query params van en un binding aparte, [queryParams].
- ui-sref-active-eq equivale a [routerLinkActiveOptions]="{ exact: true }".
Consejo de migración. Arma una sola vez una tabla con los nombres de estado y sus rutas de URL, a partir de la configuración de $stateProvider. Esa misma tabla te sirve para convertir cada ui-sref y cada llamada a $state.go.
Relacionado
¿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