详解angular2实现ng2-router 路由和嵌套路由


Posted in Javascript onMarch 24, 2017

 实现ng2-router路由,嵌套路由

首先配置angular2的时候router模块已经下载,只需要引入即可

import {RouterModule, Routes} from "@angular/router";

我们要创建一个嵌套路由,所以需要创建以下文件

  • index.html
  • app.module.ts
  • app.component.ts
  • home.component.ts
  • list.component.ts
  • list-one.component.ts
  • list-two.component.ts

实现效果:

  1. 路由,单机“首页”加载home.component.ts
  2. 单机"列表“加载list.component.ts
  3. 列表中包含嵌套路由,tab页
  4. 单机"标签一"加载list-one.component.ts
  5. 单机"标签二"加载list-one.component.ts

开始配置

index.html界面配置两点

<head>标签中引入 <meta href="/" rel="external nofollow" />

引入路由代码显示标签 引入主组件标签 <my-app></my-app>

就这么简单, index.html界面配置完毕

app.module.ts界面配置路由

import {BrowserModule} from "@angular/platform-browser";
  import {NgModule} from "@angular/core";
  import {RouterModule, Routes} from "@angular/router";

  // 表单 双向数据绑定
  import {FormsModule} from "@angular/forms";
  import {AppComponent} from "./app.component";
  // List中包含两个tab子组件
  import {ListComponent} from "./list.component";
  import {ListOneComponent} from "./list-one.component";
  import {ListTwoComponent} from "./list-two.component";
  import {HomeComponent} from "./home.component";
  // 定义路由, bootstrap默认加载组件就是AppComponent,所以他就是主页导航页,然后添加的路由都在他的模板中。

  // 可以所有代码写在NgModule中, 也可以这样自定义常量,然后使用。

  // 定义常量 嵌套自路由
  const appChildRoutes: Routes = [
   {path: "one", component: ListOneComponent},
   {path: "two", component: ListTwoComponent},
   // 如果地址栏中输入没有定义的路由就跳转到one路由界面
   {
    path: '**', redirectTo: "one"
   }
  ];
  // 定义常量 路由
  const appRoutes:Routes = [
   {path: '', component: HomeComponent},
   {
    path: 'list',
    component: ListComponent,
    children: appChildRoutes
  ];
  // 引用定义的路由
  @NgModule({
   imports: [
    BrowserModule,
    FormsModule,
    RouterModule.forRoot(appRoutes)
   ],
   declarations: [
    AppComponent,
    ListComponent,
    HomeComponent,
    ListOneComponent,
    ListTwoComponent
   ],
   bootstrap: [AppComponent]
  })
  export class AppModule {
  
  }

这样就完成了嵌套路由的配置

显示路由内容

app.component.ts

import {Component} from "@angular/core";
  @Component({
   selector: "my-app",
   // templateUrl: "../views/one.html"
   template: `
        <div>
        <!--使用了bootstrap样式的导航,routerLinkActive,表示路由激活的时候,谈价active类样式-->
         <ul class="nav navbar-nav">
          <li routerLinkActive="active"><a routerLink="home">首页</a></li>
          <li routerLinkActive="active"><a routerLink="contact">联系我们</a></li>
          <li routerLinkActive="active"><a routerLink="product">产品</a></li>
         </ul>
         <!--路由内容显示区域-->
         <router-outlet></router-outlet>
        </div>
        `
  })
  export class AppComponent {
  
  }

list.component.ts

import {Component} from "@angular/core";
  @Component({
    selector: "my-list",
    // templateUrl: "../views/list.html"
    template: `
       <div>
        <!-- 子路由连接 -->
        <a routerLink="one">one</a>
        <a routerLink="two">two</a>
        <!-- 路由内容显示标签 -->
        <router-outlet></router-outlet>
       </div>
     `
  })
  export class ListComponent {
    name = "list";
  }

list-one.component.ts

import {Component} from "@angular/core"
  @Component({
    selector: "my-list-one",
    template:`
      {{name}}
    `
  })
  export class ListOneComponent {
    name = "list-one";
    }

list-two.component.ts同理

获取路由参数id (about:id) 添加模块 ActivatedRoute

import {ActivatedRoute} from "@angular/router";  
  export class AboutList {
    id: Object;
    constructor(public route:ActivatedRoute) {
      this.id = {};
    }
    ngOnInit() {
      this.route.params.subscribe(params => {
        this.id = params // {id: "xxx"}
      });
    }
  }

直接获取id值

this.route.snapshot.params["id"]
补助: 路由中的界面跳转
  import {Router} from "@angular/router";
  
  constructor(public router: Router) {
  // 相当于window.location.href,界面跳转
    router.navigateByUrl('home');
  }

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
Javascript 解疑
Nov 11 Javascript
根据身份证号自动输出相关信息(籍贯,出身日期,性别)
Nov 15 Javascript
JS动态修改iframe高度和宽度的方法
Apr 01 Javascript
javascript模拟评分控件实现方法
May 13 Javascript
jQuery实现点击按钮弹出可关闭层的浮动层插件
Sep 19 Javascript
js console.log打印对像与数组用法详解
Jan 21 Javascript
理解javascript对象继承
Apr 17 Javascript
node网页分段渲染详解
Sep 05 Javascript
dul无法加载bootstrap实现unload table/user恢复
Sep 29 Javascript
微信小程序 wxapp画布 canvas详细介绍
Oct 31 Javascript
超简单的Vue.js环境搭建教程
Mar 17 Javascript
Angular.js ng-file-upload结合springMVC的使用教程
Jul 10 Javascript
JS实现向iframe中表单传值的方法
Mar 24 #Javascript
JS正则替换去空格的方法
Mar 24 #Javascript
原生js封装自定义滚动条
Mar 24 #Javascript
fckeditor部署到weblogic出现xml无法读取及样式不能显示问题的解决方法
Mar 24 #Javascript
jQuery实现鼠标经过显示动画边框特效
Mar 24 #jQuery
JS得到当前时间的方法示例
Mar 24 #Javascript
HTML5+jQuery实现搜索智能匹配功能
Mar 24 #jQuery
You might like
php数组函数序列之array_keys() - 获取数组键名
2011/10/30 PHP
PHP URL路由类实例
2013/11/12 PHP
老版本PHP转义Json里的特殊字符的函数
2015/06/08 PHP
PHP magento后台无法登录问题解决方法
2016/11/24 PHP
thinkphp框架使用JWTtoken的方法详解
2019/10/10 PHP
在laravel框架中实现封装公共方法全局调用
2019/10/14 PHP
基于thinkphp5框架实现微信小程序支付 退款 订单查询 退款查询操作
2020/08/17 PHP
风吟的小型JavaScirpt库 (FY.JS).
2010/03/09 Javascript
Node.js与PHP、Python的字符处理性能对比
2014/07/06 Javascript
jquery中toggle函数交替使用问题
2015/06/22 Javascript
AngularJS中的$watch(),$digest()和$apply()区分
2016/04/04 Javascript
JavaScript实现的斑马线表格效果【隔行变色】
2017/09/18 Javascript
nodejs实现连接mongodb数据库的方法示例
2018/03/15 NodeJs
vue中动态设置meta标签和title标签的方法
2018/07/11 Javascript
微信小程序按钮点击跳转页面详解
2019/05/06 Javascript
ES6 Array常用扩展的应用实例分析
2019/06/26 Javascript
深入理解javascript prototype的相关知识
2019/09/19 Javascript
通过js随机函数Math.random实现乱序
2020/05/19 Javascript
python Django模板的使用方法
2016/01/14 Python
Python利用Django如何写restful api接口详解
2018/06/08 Python
Python脚本完成post接口测试的实例
2018/12/17 Python
Django多进程滚动日志问题解决方案
2019/12/17 Python
django filter过滤器实现显示某个类型指定字段不同值方式
2020/07/16 Python
django表单中的按钮获取数据的实例分析
2020/07/31 Python
如何使用PyCharm引入需要使用的包的方法
2020/09/22 Python
巴西电子、家电、智能手机购物网站:Girafa
2019/06/04 全球购物
美国杰西潘尼官网:JCPenney
2019/06/12 全球购物
美国校服网上商店:French Toast
2019/10/08 全球购物
PHP如何对用户密码进行加密
2014/07/31 面试题
行政管理专业推荐信
2013/11/02 职场文书
酒店营销策划方案
2014/02/07 职场文书
双语教学实施方案
2014/03/23 职场文书
团代会宣传工作方案
2014/05/08 职场文书
个人师德师风自我剖析材料
2014/09/29 职场文书
立案决定书范文
2015/06/24 职场文书
python 制作一个gui界面的翻译工具
2021/05/14 Python