$location en Angular moderno
$location se divide en dos: el Router para la navegación y los parámetros de ruta, y el servicio Location para operaciones de bajo nivel sobre la URL y el historial.
Antes · AngularJS
vm.page = $location.search().page || 1;
vm.goToUser = function (id) {
$location.path('/users/' + id).search({ tab: 'orders' });
};
vm.back = function () { $window.history.back(); };Después · Angularprivate router = inject(Router);
private location = inject(Location);
private route = inject(ActivatedRoute);
page = toSignal(
this.route.queryParamMap.pipe(map(p => Number(p.get('page') ?? 1))),
{ initialValue: 1 },
);
goToUser(id: number) {
this.router.navigate(['/users', id], { queryParams: { tab: 'orders' } });
}
back() { this.location.back(); }Qué cambia
- $location.path() y $location.url() como setters pasan a ser Router.navigate o Router.navigateByUrl.
- $location.search() pasa a ser ActivatedRoute.queryParamMap, o inputs del componente cuando el router usa withComponentInputBinding().
- html5Mode(true) es el comportamiento por defecto; las URL con hash necesitan withHashLocation() en provideRouter.
Consejo de migración. En una app híbrida ambos frameworks observan la URL. El paquete @angular/common/upgrade ofrece un reemplazo de $location respaldado por el Location de Angular, que mantiene a los dos sincronizados.
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