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

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

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

rush:js;"> 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界面配置两点

标签中引入

引入路由代码显示标签 引入主组件标签

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

app.module.ts界面配置路由

rush:js;"> 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

rush:js;"> import {Component} from "@angular/core"; @Component({ selector: "my-app",// templateUrl: "../views/one.html" template: `
` }) export class AppComponent {

}

list.component.ts

` }) export class ListComponent { name = "list"; }

list-one.component.ts

rush:js;"> 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

{ this.id = params // {id: "xxx"} }); } }

直接获取id值

rush:js;"> this.route.snapshot.params["id"] 补助: 路由中的界面跳转 import {Router} from "@angular/router";

constructor(public router: Router) {
// 相当于window.location.href,界面跳转
router.navigateByUrl('home');
}

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持编程之家。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


什么是深拷贝与浅拷贝?深拷贝与浅拷贝是js中处理对象或数据复制操作的两种方式。‌在聊深浅拷贝之前咱得了解一下js中的两种数据类型:
前言 今天复习了一些前端算法题,写到一两道比较有意思的题:重建二叉树、反向输出链表每个节点 题目 重建二叉树: 输入某二叉树的前序遍历和中序遍历的结果,请重建出该二叉树。假设输入的前序遍历和中序遍历的结果中都不含重复的数字。例如输入前序遍历序列 {1,2,4,7,3,5,6,8} 和中序遍历序列 {
最近在看回JavaScript的面试题,this 指向问题是入坑前端必须了解的知识点,现在迎来了ES6+的时代,因为箭头函数的出现,所以感觉有必要对 this 问题梳理一下,所以刚好总结一下JavaScript中this指向的问题。
js如何实现弹出form提交表单?(图文+视频)
js怎么获取复选框选中的值
js如何实现倒计时跳转页面
如何用js控制图片放大缩小
JS怎么获取当前时间戳
JS如何判断对象是否为数组
JS怎么获取图片当前宽高
JS对象如何转为json格式字符串
JS怎么获取图片原始宽高
怎么在click事件中调用多个js函数
js如何往数组中添加新元素
js如何拆分字符串
JS怎么对数组内元素进行求和
JS如何判断屏幕大小
js怎么解析json数据
js如何实时获取浏览器窗口大小
原生JS实现别踩白块小游戏(五)