How do I navigate to a parent route from a child route?

前端 未结 11 2010
Happy的楠姐
Happy的楠姐 2020-11-29 19:04

My problem is quite classic. I have a private part of an application which is behind a login form. When the login is successful, it goes to a child route for th

11条回答
  •  生来不讨喜
    2020-11-29 19:35

    Do you want a link/HTML or do you want to route imperatively/in code?

    Link: The RouterLink directive always treats the provided link as a delta to the current URL:

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

    With RouterLink, remember to import and use the directives array:

    import { ROUTER_DIRECTIVES } from '@angular/router';
    @Component({
        directives: [ROUTER_DIRECTIVES],
    

    Imperative: The navigate() method requires a starting point (i.e., the relativeTo parameter). If none is provided, the navigation is absolute:

    import { Router, ActivatedRoute } from '@angular/router';
    ...
    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     ../../parent;abc=xyz
    this.router.navigate(["../../parent", {abc: 'xyz'}], {relativeTo: this.route});
    // with query param and fragment   ../../parent?p1=value1&p2=v2#frag
    this.router.navigate(["../../parent"], {relativeTo: this.route, 
        queryParams: {p1: 'value', p2: 'v2'}, fragment: 'frag'});
    
    // navigate without updating the URL 
    this.router.navigate(["../../parent"], {relativeTo: this.route, skipLocationChange: true});
    

提交回复
热议问题