zoukankan      html  css  js  c++  java
  • [Angular2 Router] Programmatic Router Navigation via the Router API

    In this tutorial we are going to learn how to navigate programmatically (or imperatively) by using the Router API. We are going to learn how to use the function navigateByUrl to navigate using a manually constructed string, but we are also going to learn how to trigger route navigation by using the navigate API method, which takes an array or arguments and a parameters object.

    We are going to learn how to do both absolute and relative route navigation using the navigate API, and we are going to introduce the notion of activated route.

    In our HerosComponent, we add input box, when you enter the number, it will goes to fetch the hero:

    heros.routes.ts:

    import {HerosComponent} from "./heros.component";
    import {RouterModule} from "@angular/router";
    import {HeroComponent} from "./hero/hero.component";
    const routes = [
      {path: '', component: HerosComponent},
      {path: ':id', component: HeroComponent},
    ];
    export default RouterModule.forChild(routes)

    heros.component.html:

    Search Index: <input type="text" placeholder="Search" (keyup.enter)="getHeroByIndex(inpRef.value)" #inpRef>
    <ul>
      <li *ngFor="let hero of heros | async">
        <a [routerLink]="hero.id"
           routerLinkActive="active"
           [routerLinkActiveOptions]="{exact: true}">{{hero.name}}</a>
      </li>
    
      <!-- we can also do [routerLink]="['/heros', hero.id]", this will point to "heros/1";
           if you do:  [routerLink]="['heros', hero.id]",  this will point to "heros/heros/1"
           Since we are already in heros module we just need to do [routerLink]="hero.id", point to "heros/1"
       -->
    </ul>

    heros.component.ts:

    import { Component, OnInit } from '@angular/core';
    import {StarWarsService} from "./heros.service";
    import {Observable} from "rxjs";
    import {Router, ActivatedRoute} from "@angular/router";
    
    @Component({
      selector: 'app-heros',
      templateUrl: './heros.component.html',
      styleUrls: ['./heros.component.css']
    })
    export class HerosComponent implements OnInit {
    
      heros: Observable<any>;
      constructor(private starwasService: StarWarsService, private router: Router, private route: ActivatedRoute) { }
    
      ngOnInit() {
        this.heros = this.starwasService.getPeople();
      }
    
      getHeroByIndex(i){
       // this.router.navigateByUrl(`/heros/${i}`);
       // this.router.navigate(['heros', i]);
        this.router.navigate([i], {relativeTo: this.route})
      }
    
    }

    So when you type 'enter', will call getHeroByIndex function, there are three ways to nav to a router programmtically.

    1. navigateByUrl: it accepts an router url.

    2. navigate: first param is an array, absolute path: ['contacts', id] --> contacts/1

    3. Recommend: relative path:

      'this.route':  point to the current router.  

      [i]: the relative path to the current router.

    Github

  • 相关阅读:
    javaHTTP请求工具类-使用HttpURLConnection实现
    windows 无法启动redis 服务(位于本地计算机上)错误1053 服务没有及时响应启动或控制请求
    Redis 教程
    谢娜离开《快本》103天,暴露了芒果一姐的假相:有一种天真,叫错把平台当本事
    Api 在线文档目录:java8 中文、java11中文
    Linux关闭防火墙命令red hat/CentOs7
    Win10使用RedisDesktopManager工具连接虚拟机(CentOS 7)Redis
    如何win10 上访问虚拟机(linux)上redis方法
    汽车车牌JS正则表达式验证(含新能源车牌)
    vue 直接输入路由地址进入_vue地址栏直接输入路由无效问题
  • 原文地址:https://www.cnblogs.com/Answer1215/p/5911321.html
Copyright © 2011-2022 走看看