en mi proyecto Angular 12 tengo rutas como estas:
/:par1/:par2/something/page /:par1/:par2/something2/page2Necesito configurar par1 y par2 mediante programación.
En este momento uso este código para lograr eso:
const url = this.router.routerState.snapshot.url; const splittedUrl = url.split('/'); splittedUrl[1] = getPar1(); splittedUrl[2] = getPar2(); this.router.navigate(splittedUrl);pero me parece una solución realmente fea.
¿Hay alguna manera de configurar par1 y par2 por su nombre como lo hacemos cuando los obtenemos de la ruta activada?
Resolví hoy el mismo problema.
Este es mi enfoque:
importar Ruta Activada en el constructor
constructor(private activatedRoute: ActivatedRoute)use la ruta activada para obtener el urlSegment y asigne una matriz con todos los segmentos (aplique su cambio donde sea necesario)
Este es un ejemplo aplicado a su problema.
const url: string[] = this.activatedRoute.snapshot['_urlSegment'].segments.map((urlSegment: UrlSegment, index: number) => { if (index === 0) return getPar1(); else if (index === 1) return getPar2(); else return urlSegment.path; }); this.router.navigate(url);