我们用Angular cli创建带有路由的新项目

ng new router --routing

Angular Routes API文档

Angular的文档中有详细的解释:

1)https://angular.cn/docs/ts/latest/api/router/index/Routes-type-alias.html
2)https://angular.cn/docs/ts/latest/guide/router.html#

文档学习:

1)Wild Cards(通配符)

{path: '**', component: Code404Component}, 

>注意:配置路由,一定要记得引入文件

import {Code404Component} from "./code404/code404.component"

> 通配符路由的path是两个星号('**'),它会匹配任何URL。 当路由器匹配不上以前定义的那些路由时,它就会选择<这个>路由。 通配符路由可以导航到自定义的“404 Not Found”组件,也可以[重定向](https://angular.cn/docs/ts/latest/guide/router.html#redirect)到一个现有路由。

2)关于参数的快照(snapshot)和参数的订阅(subscribe)

export class ProductComponent implements OnInit {

private productId : number ;
//给ProductComponent设置一个属性(属性名是productId,属性类型是number)

constructor(private routerInfo : ActivatedRoute) { }
//ActivatedRoute当前路由激活的对象,保存着当前路由的信息,比如路由地址和路由参数

ngOnInit() {
this.productId = this.routerInfo.snapshot.queryParams["id"]; //参数快照
this.routerInfo.params.subscribe((params:Params) => this.productId = params ["id"]); //参数订阅
}
}

参数快照和参数订阅的区别:

![https://angular.cn/docs/ts/latest/guide/router.html#](http://upload-images.jianshu.io/upload_images/5983836-aa1cd314e9185f0d.gif?imageMogr2/auto-orient/strip)
>比如API中的这个图片,
参数快照:点了crisis后再点heroes,然后再点crisis是回不去的。
参数订阅:可以一直切换下去

3)在路由时传递数据(3种方法)
a.在查询参数中传递数据:

/product?id = 1&name = 2 => ActivatedRoute.queryParams[id]

b.在路由的路径中传递数据:

{path:/product/:id} => /product/1 => ActivatedRoute.params[id]

c.在路由配置中传递数据

{path:/product,component;ProductComponent,data:[{isProd:true}] }
=> ActivateRoute.data[0][isProd]

4)路由重定向

添加一个redirect路由来把最初的相对路径('')转换成期望的默认路径(/home)。 浏览器地址栏会显示.../home,就像你直接导航到那里一样。

const routes:Routes = [
{path : '' , redirectTo:'/home' , pathMath : 'full'},
{path : 'home' , component: HomeComponent},
]
//把当前的路由重定向到home路由上

重定向路由需要一个pathMatch属性,来告诉路由器如何使用URL去匹配路由的路径,否则路由就会报错,因此要把pathMacth设置为'full'

Angular Route导航的更多相关文章

  1. Angular+Bootstrap3导航菜单

    Angular+Bootstrap3导航菜单 AngularJS体验式编程系列文章,将介绍如何用angularjs构建一个强大的web前端系统.angularjs是由Google团队开发的一款非常优秀 ...

  2. 使用Angular Router导航基础

    名称 简介 Routes 路由配置,保存着那个URL对应着哪个组件,以及在哪个RouterOulet中展示组件. RouterOutlet 在HTML中标记路由内容呈现位置的占位符指令. Router ...

  3. angular route 与 django urls 冲突怎么解决?

    app.js var app = angular.module('app', [ 'ngResource', 'ngRoute', // 'ui.bootstrap', // 'ngResource' ...

  4. angular 实现导航ng-click切换

    angular写的导航.自学angular已有一段时间. <!doctype html><html lang="en"><head> <m ...

  5. angular -- $route API翻译

    $route -$routeProvider服务 -依赖ngRoute模块 $route能够在路径发生改变的时候,渲染不同的视图,调用不同的控制器.它监测了$location.url(),然后根据路径 ...

  6. 6、Angular Route 路由

    1.没有嵌套路由 类似 ui-route 上述的html用红字标记的是必须导入的.这是因为:路由并不在ng2中,需要我们额外引入,另外我们需要设置base href,这是个什么东西呢?相当于我们后续所 ...

  7. Angular route传参

    从 router-link-page1 跳转 router-link-page2 和 router-link-page3 通过自定义路由 设置router-link-page2的路由后有3个参数,pa ...

  8. [Angular] N things you might don't know about Angular Route

    Prevent Partail Page display: By using Resolver: @Injectable() export class MovieResolver implements ...

  9. 基于angular的route实现单页面cnodejs

    Angular ui-router 前言 之前不太理解前端怎么实现路由功能,以前知道有一种方式使用html5的pushState可以操作url才实现路由的功能,在实践项目中也用过一次,后来这种操作叫成 ...

随机推荐

  1. 实现一个竖直的显示表头的表格(vue版本)

    今天遇到一个问题,实现这样一个竖直的显示表头的表格,如下图.默认显示两列. vue实现代码如下:   tableComponent.vue:   <template> <table ...

  2. 倒排索引的AND操作

    这是一道来自百度的面试题.倒排索引的AND操作. 倒排索引是以关键词作为索引项来索引文档的一种机制,如图中Brutus.Calpurnia.Caesar为关键词,2.4.8等等为文档ID. 现在有一个 ...

  3. 分离你的spring配置文件,让结构更清晰

    前言 接着上一篇的,这次框架的改变也成功分离了spring的配置文件. 以前,spring的配置文件从一开始的一点,到后面的逐渐变多,慢慢的,在一个spring的配置文件中就包含了好几块不同的bean ...

  4. 转账示例(二):service层面实现(本例采用QueryRunner来执行sql语句,数据源为C3P0)

    缺点:Service层面把Dao层面的开启事务操作完成了1.自行创建C3P0Uti,account数据库,导入Jar包 2.Dao层面 接口: package com.learning.dao; im ...

  5. 记因PHP的内存溢出导致的事故之解决

    如果对您有用记得关注,更多干货. 今天上午刚到公司,就有同事在公司群里反映某个计划任务出现问题了.我就怀着刨根问底的心,去查看了log.发现挺有意思的一个问题,PHP内存溢出导致脚本执行失败.那就一起 ...

  6. 傻瓜式使用AutoFac

    定义一个接口: using System; using System.Collections.Generic; using System.Linq; using System.Web; namespa ...

  7. JavaScript分支语句if, else if, switch 案例详解

      if语句主要是在需要判断,或者在可知有多少种情形时使用的语句.A==B?"A等于B";"A不等于B"; 基本结构:           if(判断条件){ ...

  8. D3D Learning_01_CreateWindow

    // Learn_01_CreateWindow.cpp : Defines the entry point for the application. // #include "stdafx ...

  9. MySQL执行计划总结

    背景 在工作过程中,最近时常对慢查询进行调优.对于MySQL的SQL语句调优,MySQL本身提供了强大的explain关键字用于查询分析执行计划. 本文对explain执行计划进行分析与整理,文中的内 ...

  10. & and &&区别

    &:位逻辑运算: &&:逻辑运算: &&在java中又称为短路,第一个条件是false的话后面就不执行: &是所有条件都执行: System.out.p ...