详解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 相关文章推荐
颜色选择器 Color Picker,IE,Firefox,Opera,Safar
Nov 25 Javascript
跟我学习javascript的作用域与作用域链
Nov 19 Javascript
JavaScript匿名函数之模仿块级作用域
Dec 12 Javascript
jQuery toggle 代替方法
Mar 22 Javascript
Node.js DES加密的简单实现
Jul 07 Javascript
Vue概念及常见命令介绍(1)
Dec 08 Javascript
javascript动画之磁性吸附效果篇
Dec 09 Javascript
Angular2使用Angular-CLI快速搭建工程(二)
May 21 Javascript
jQuery实现图片上传预览效果功能完整实例【测试可用】
May 28 jQuery
深入了解JavaScript代码覆盖
Jun 13 Javascript
Vue父子组件传值的一些坑
Sep 16 Javascript
javascript的setTimeout()使用方法总结
Nov 20 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
BBS(php &amp; mysql)完整版(一)
2006/10/09 PHP
php实现压缩合并js的方法【附demo源码下载】
2016/09/22 PHP
浅谈laravel数据库查询返回的数据形式
2019/10/21 PHP
JavaScript 无符号右移赋值操作
2009/04/17 Javascript
基于jquery实现漂亮的动态信息提示效果
2011/08/02 Javascript
Javascript 面向对象编程(一) 封装
2011/08/28 Javascript
解析Jquery取得iframe中元素的几种方法
2013/07/04 Javascript
JQUERY 获取IFrame中对象及获取其父窗口中对象示例
2013/08/19 Javascript
Ext JS 4实现带week(星期)的日期选择控件(实战一)
2013/08/21 Javascript
jquery自动切换tabs选项卡的具体实现
2013/12/24 Javascript
nodejs npm install全局安装和本地安装的区别
2014/06/05 NodeJs
浅析Bootstrap表格的使用
2016/06/23 Javascript
jQuery实现ToolTip元素定位显示功能示例
2016/11/23 Javascript
JavaScript数据结构之二叉树的遍历算法示例
2017/04/13 Javascript
利用forever和pm2部署node.js项目过程
2017/05/10 Javascript
JS实现留言板功能
2017/06/17 Javascript
JavaScript条件判断_动力节点Java学院整理
2017/06/26 Javascript
vue中实现先请求数据再渲染dom分享
2018/03/17 Javascript
jQuery 实现倒计时天,时,分,秒功能
2018/07/31 jQuery
vuex 解决报错this.$store.commit is not a function的方法
2018/12/17 Javascript
Vue.js路由实现选项卡简单实例
2019/07/24 Javascript
JavaScript实现alert弹框效果
2020/11/19 Javascript
[02:12]2015国际邀请赛 SHOWOPEN
2015/08/05 DOTA
Tornado高并发处理方法实例代码
2018/01/15 Python
Python使用matplotlib填充图形指定区域代码示例
2018/01/16 Python
对numpy中数组元素的统一赋值实例
2018/04/04 Python
django获取from表单multiple-select的value和id的方法
2019/07/19 Python
python字符串的拼接方法总结
2019/11/18 Python
python实现粒子群算法
2020/10/15 Python
外贸销售员求职的自我评价
2013/11/23 职场文书
医学专业应届生的自我评价
2014/02/28 职场文书
法院先进个人事迹材料
2014/05/04 职场文书
捐助贫困学生倡议书
2014/05/16 职场文书
创先争优活动心得体会
2014/09/04 职场文书
2014年施工员工作总结
2014/11/18 职场文书
Python 流媒体播放器的实现(基于VLC)
2021/04/28 Python