Carlos Cifuentes
Referencia AngularJS → Angular

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