更多详细:https://segmentfault.com/a/1190000009265310

一、标题:页面有两个按钮(test1、test2),点击这两个按钮,跳转相应页面~

注:可直接创建一个带路由模块的项目:ng new project --routing   (下面针对新建项目时没有带路由,后边再来新建路由)

1、新建两个页面 test1、test2(html、css、ts):      ng g component test1

在app.modules.ts(模块)中:

(1)导入根组件,以及相应子组件(test1、test2)

(2)添加相应路由组件 import { AppRoutingModules } from "./app/routing";

(3)初始化路由器imports: [ RouterModule.forRoot(routes) ],用于在主模块中定义主要的路由信息

2、在app.component.html中添加相应的跳转按钮,以及路由路径

3、路由配置:新建路由模块 app.routing.ts(配置文件) :     ng generate module app-routing --flat --module=app

    • import 根组件、子组件、路由组件;
    • 编写路由路径 const routes;
方法:
const routes: Routes = [
// path:路径 component:组件
{ path: 'news', component: Newsomponent },
{ path: 'detail/:id', component: DetailComponent }, // 带参数 { path: 'other', loadChildren:"./other/other.module#otherModule" },// 懒加载子模块, 子模块需要配置路由设置启动子组件
  { path: '**', pathMatch: 'full', redirectTo: '' } // 重定向 
];

/index设置页面下有 /index/testUrl1 和  /index/testUrl2 两个页面,分别表示个人资料页和修改密码页。

我们可能希望我们的 / settings 页面拥有自己的组件,然后在设置页面组件中显示 / settings/profile 和 / settings/password 页面。我们可以这样做:

在这里,我们在 setttings 路由中定义了两个子路由,它们将继承父路由的路径,因此修改密码页面的路由匹配地址是 /settings/password ,依此类推。

接下来,我们需要在我们的 AppComponent(index) 组件中添加 router-outlet 指令,因为我们要在设置页面中呈现子路由。

二、链接及访问

<a routerLink="/detail/test1" routerLinkActive="active">detail</a>
<a [routerLink]="['/detail', news.id]">{{news.title}}</a> //路由中传参数
<a [routerLink]="[{ outlets: { let2: ['news'] } }]">Contact</a>

//注:routerLinkActive="active"
 即在本路由激活时添加样式 .active

import { Router } from '@angular/router';
// ...
constructor(private router: Router) {} // ...
 to_detail(item){
  this.router.navigate(['/detail', {queryParams:item}]); //路由中传参数(多个参数)
  this.router.navigate({'/detail',news.id}); //一个参数
  this.router.navigate([{ outlets: { let2: null }}]);
} 注:navigateByUrl 方法指向完整的绝对路径

传参之后的接收方法:

1.snapshot
import { ActivateRoute } from '@angular/router';

constructor( public route: ActivateRoute ) { };
ngOnInit(){
this.data = this.route.snapshot.params['id'];
};
 
2.queryParams
import { ActivateRoute } from '@angular/router';

constructor( public activeRoute:ActivateRoute ) { };
ngOnInit(){
  this.activeRoute.queryParams.subscribe(params => {
    console.log(params);
  });
};

angularcli 第八篇(router 路由)的更多相关文章

  1. 第三十八篇:vue3路由

    好家伙,水博客怎么说 1.0.安装:简简单单的淘宝镜像安装 装一下淘宝镜像(一般都有) npm install -g cnpm --registry=https://registry.npm.taob ...

  2. 前端MVC Vue2学习总结(八)——Vue Router路由、Vuex状态管理、Element-UI

    一.Vue Router路由 二.Vuex状态管理 三.Element-UI Element-UI是饿了么前端团队推出的一款基于Vue.js 2.0 的桌面端UI框架,手机端有对应框架是 Mint U ...

  3. Python之路【第十八篇】:Web框架们

    Python之路[第十八篇]:Web框架们   Python的WEB框架 Bottle Bottle是一个快速.简洁.轻量级的基于WSIG的微型Web框架,此框架只由一个 .py 文件,除了Pytho ...

  4. Flask最强攻略 - 跟DragonFire学Flask - 第八篇 实例化Flask的参数 及 对app的配置

    Flask 是一个非常灵活且短小精干的web框架 , 那么灵活性从什么地方体现呢? 有一个神奇的东西叫 Flask配置 , 这个东西怎么用呢? 它能给我们带来怎么样的方便呢? 首先展示一下: from ...

  5. 全面解析JavaScript的Backbone.js框架中的Router路由

    这篇文章主要介绍了Backbone.js框架中的Router路由功能,Router在Backbone中相当于一个MVC框架中的Controller控制器功能,需要的朋友可以参考下. Backbone ...

  6. VueRouter爬坑第二篇-动态路由

    VueRouter系列的文章示例编写时,项目是使用vue-cli脚手架搭建. 项目搭建的步骤和项目目录专门写了一篇文章:点击这里进行传送 后续VueRouter系列的文章的示例编写均基于该项目环境. ...

  7. flask 第八篇 实例化flask时的参数配置

    Flask 是一个非常灵活且短小精干的web框架 , 那么灵活性从什么地方体现呢? 有一个神奇的东西叫 Flask配置 , 这个东西怎么用呢? 它能给我们带来怎么样的方便呢? 首先展示一下: from ...

  8. VueRouter爬坑第四篇-命名路由、编程式导航

    VueRouter系列的文章示例编写时,项目是使用vue-cli脚手架搭建. 项目搭建的步骤和项目目录专门写了一篇文章:点击这里进行传送 后续VueRouter系列的文章的示例编写均基于该项目环境. ...

  9. Angular 从入坑到挖坑 - Router 路由使用入门指北

    一.Overview Angular 入坑记录的笔记第五篇,因为一直在加班的缘故拖了有一个多月,主要是介绍在 Angular 中如何配置路由,完成重定向以及参数传递.至于路由守卫.路由懒加载等&quo ...

随机推荐

  1. 深入理解JVM虚拟机

    JVM平台上还可以运行其他语言,运行的是Class字节码.只要能翻译成Class的语言就OK了.挺强大的. JVM厂商很多 垃圾收集器.收集算法 JVM检测工具 关于类的加载: Java代码中,类型( ...

  2. 在条件判断中使用 all() / any()

    在条件判断中使用 all() / any() all() 和 any() 两个函数非常适合在条件判断中使用.这两个函数接受一个可迭代对象,返回一个布尔值,其中: all(seq):仅当 seq 中所有 ...

  3. jeecg 模糊查询

    1.前言 jeecg 考虑到默认模糊查询的话,会增加系统压力,导致查询慢,本来系统就挺那啥的... 2.方式一之实体赋值 实体重新赋值查询,用 * %% * 实现,我们知道 sql 中通常使用 % 去 ...

  4. solr的创建分片的方式

    在Solr4.4之后,Solr提供了SolrCloud分布式集群的模式,它带来的主要好处是: (1)大数据量下更高的性能 (2)更好扩展性 (3)更高的可靠性 (4)更简单易用 什么时候应该使用Sol ...

  5. 如何利用Docker构建基于DevOps的全自动CI

    来自用户的DevOps实践分享,分享从开发代码到生产环境部署的一条龙操作的实践及经验, 包含工具技术的选型及考量.私有代码库与私有镜像库的应用等. (一)容器服务的Rancher选型 1.为什么说是下 ...

  6. kafka java项目测试使用

    引入依赖 <dependency> <groupId>org.apache.kafka</groupId> <artifactId>kafka_2.11 ...

  7. java的线程池的使用

    1.线程池的创建 1.首先创建一个类,然后实现Runnable接口 public class ExectorTest implements Runnable {} 2.首先声明一个线程池的全局变量 p ...

  8. day50——js补充

    day50 前端内容回顾 HTML 标签分类 块级标签:div p h1-h6 form hr br ul li ol table标签 内联标签:span a img label input sele ...

  9. pytest_使用自定义标记mark

    前言 pytest可以支持自定义标记,自定义标记可以把一个web项目划分多个模块,然后指定模块名称执行.app自动化的时候,如果想android和ios公用一套代码时,也可以使用标记功能,标明哪些是i ...

  10. 阿里巴巴 Java 开发手册(三): 代码格式

    1. [强制]大括号的使用约定.如果是大括号内为空,则简洁地写成{}即可,不需要换行:如果 是非空代码块则: 1) 左大括号前不换行. 2) 左大括号后换行. 3) 右大括号前换行. 4) 右大括号后 ...