page navigationend cambiar angular angular2-routing angular2-router

angular - navigationend - ¿Cómo navego a una ruta de hermanos?



title angular 6 (2)

La directiva RouterLink siempre trata el enlace proporcionado como un delta a la URL actual:

[routerLink]="[''/absolute'']" [routerLink]="[''../../parent'']" [routerLink]="[''../sibling'']" [routerLink]="[''./child'']" // or [routerLink]="[''child'']" // with route param ../sibling;abc=xyz [routerLink]="[''../sibling'', {abc: ''xyz''}]" // with query param and fragment ../sibling?p1=value1&p2=v2#frag [routerLink]="[''../sibling'']" [queryParams]="{p1: ''value'', p2: ''v2''}" fragment="frag"

El método navigate() requiere un punto de inicio (es decir, el parámetro relativeTo ). Si no se proporciona ninguno, la navegación es absoluta:

constructor(private router: Router, private route: ActivatedRoute) {} this.router.navigate("/absolute/path"); this.router.navigate("../../parent", {relativeTo: this.route}); this.router.navigate("../sibling", {relativeTo: this.route}); this.router.navigate("./child", {relativeTo: this.route}); // or this.router.navigate("child", {relativeTo: this.route}); // with route param ../sibling;abc=xyz this.router.navigate(["../sibling", {abc: ''xyz''}], {relativeTo: this.route}); // with query param and fragment ../sibling?p1=value1&p2=v2#frag this.router.navigate("../sibling", {relativeTo: this.route, queryParams: {p1: ''value'', p2: ''v2''}, fragment: ''frag''}); // RC.5+: navigate without updating the URL this.router.navigate("../sibling", {relativeTo: this.route, skipLocationChange: true});

Supongamos que tengo esta configuración de enrutador

export const EmployeeRoutes = [ { path: ''sales'', component: SalesComponent }, { path: ''contacts'', component: ContactsComponent } ];

y ha navegado hacia SalesComponent través de esta URL

/department/7/employees/45/sales

Ahora me gustaría ir a los contacts , pero como no tengo todos los parámetros para una ruta absoluta (por ejemplo, la ID del departamento, 7 en el ejemplo anterior) prefiero llegar usando un enlace relativo, por ejemplo

[routerLink]="[''../contacts'']"

o

this.router.navigate(''../contacts'')

que lamentablemente no funciona. Puede haber una solución obvia pero no la estoy viendo. ¿Alguien puede ayudar aquí por favor?


Si está utilizando el nuevo enrutador (3.0.0-beta2), puede usar el ActivetedRoute para navegar a la ruta relativa de la siguiente manera:

constructor(private router: Router, private r:ActivatedRoute) {} /// goToContact() { this.router.navigate(["../contacts"], { relativeTo: this.r }); }