zoukankan      html  css  js  c++  java
  • [Angular2 Router] Optional Route Query Parameters

    In this tutorial we are going to learn how to use the Angular 2 router to pass optional query parameters from one route into another route. There are couple of ways of doing this from the source route perspective: we use the queryParams property in the navigate API call, or we can use the queryParams directive.

    On the receiving side, and especially in the case of detail child routes where we want to navigate from one detail into the other, we are going to see how to use the queryParams observable to receive the navigation query parameters.

    First way, using in html:

        <a [routerLink]="hero.id"
           routerLinkActive="active"
           [queryParams]="{description: 'Starwar Hero '}"
           [routerLinkActiveOptions]="{exact: true}">{{hero.name}}</a>

    Second way, using in JS:

      getHeroByIndex(i){
       // this.router.navigateByUrl(`/heros/${i}`);
       // this.router.navigate(['heros', i]);
        this.router.navigate([i], {
          relativeTo: this.route,
          queryParams: {
            description: 'Star war Hero'
          }
        })
      }

    Read the query param:

    export class HeroComponent implements OnInit {
    
      hero: Observable<any>;
      description: string;
    
      constructor(private router: ActivatedRoute,
                  private starwarService: StarWarsService) {
    
      }
    
      ngOnInit() {
        /* this.hero = this.router.params
         .map((p:any) => p.id)
         .switchMap( id => this.starwarService.getPersonDetail(id));
         */
    
        // since herocomponent get init everytime, it would be better to use snapshot for proferemence
        const heroId = this.router.snapshot.params['id'];
        this.hero = this.starwarService.getPersonDetail(heroId);
    
        this.router.queryParams.subscribe(
          param => this.description = param['description']
        )
      }
    
    }

    In url, it looks like:

    http://localhost:4200/heros/4?description=Starwar%20Hero%20

    Github

  • 相关阅读:
    【java】一维数组循环位移方阵
    【java】for循环输出数字金字塔
    C++编程tips
    C++中cin.get 和cin.peek 及其相关的用法
    ubuntu增加字符设备驱动程序/ 操作系统课程设计
    C++ Primer 学习笔记/ 处理类型
    C++学习,顶层const
    C++学习笔记/const和指针
    ubuntu16.04增加系统调用(拷贝)
    Java学习笔记#数组 循环遍历
  • 原文地址:https://www.cnblogs.com/Answer1215/p/5917824.html
Copyright © 2011-2022 走看看