Angular2学习笔记之Router篇

Angular2 Router

angular2的Router组件从beta版本到rc版发生了很大的变化,rc2到rc4也有着不小的变动。本文主要是针对最新的RC4版本的学习笔记。

Angular 2中的Router的负责在各个Component之间导航跳转,传递参数。 Angular 2作为一个单页网站开发框架,它所有的的内容呈现其实都是在一个页面上(index.html), 那么为什么正在页跳转的时候,URL。

<base href>标签

使用Router的第一步是添加“<base href>”标签,为Router指明项目的根目录.“<base href>”标签应该添加到index.html文件的"<head>"标签中,作为其第一个子元素。如果app文件夹是项目的根目录其格式为:

<head>
    <base href="/">
</head>

<base>是HTML标签,它的作用是指明当前页面所有相对路径URL的基础路径。设置根目录的目的是帮助Angualr 2调用浏览器的history.pushState接口,用于导航。

引入Router Directives

import {ROUTER_DIRECTIVES} from '@angular/router'; 

Router配置

Router如何知道哪一个URL对应哪一个Component呢? 答案是通过路由配置,Angualr2的路由配置信息是一个Javascript Object数组组成的,由RouterConfig定义。

export const routes: RouterConfig = [
  { path: 'crisis-center', component: CrisisListComponent },
  { path: 'heroes', component: HeroListComponent }
];
  1. 配置中path为url地址,path对应的url值是不能以“/”开始,component是该url对应的Component。
  2. 设置好Router信息后,需要将配置传入到provideRouter方法中。
export const APP_ROUTER_PROVIDERS = [
  provideRouter(routes)
];
  1. 导入刚刚编写的Router配置到main.ts文件中
import { bootstrap }            from '@angular/platform-browser-dynamic';
import { AppComponent }         from './app.component';
import { APP_ROUTER_PROVIDERS } from './app.routes';
bootstrap(AppComponent, [
  APP_ROUTER_PROVIDERS
])
.catch(err => console.error(err));

<router-outlet>标签

router将会把url对应component的内容展示在“<router-outlet></router-outlet>”标签中,我们还可以为<router-outlet>标签命名。

routerLink

在常规的html中,我们使用"<a href>"标签来放置链接地址,但是在angular 2项目中,如果要使用Router实现页页面跳转我们需要使用 routerLink

<a [routerLink]="['/crisis-center']">Crisis Center</a>

Restful URL

利用Router我们可以轻松的构建Restful的应用,在这里使用官方文档的例子,通过url “/hero/{id}”,可以取得指定id的hero的信息,router的定义如下:

{path: 'hero/:id', component: HeroDetailComponent}

url跳转可以直接使用routerLink的方式:

<a [routerLink]="['/hero/1']">Batman</a>

更常见的方式是利用Typescript代码实现router跳转

let id = 5
router.navigate(['/hero', id]);

接收url参数,angular2 鼓励使用“订阅者模式”来接收url参数

let id: number;
let sub = route.params.subscribe(params =>  
    id = +params['id'] // 加号的作用是将字符串转化为数字
)

使用订阅者模式的好处是可以是component得到复用,当下次用一个全新的id跳转到该component时,angular不用再创建一个全新的component,只需要更新component中与id相关的内容就好了。 使用订阅者模式需要注意的是,在component结束时,需要手动释放subscribe,否则会导致内存泄漏。

sub.unsubscribe()

转载于:https://my.oschina.net/u/189332/blog/710085

解决Angular2 router.navigate刷新页面的问题 造成这个问题一般是因为我们在<form>表单中使用<button>时忘记添加type属性,在表单中,如果忘记给按钮添加属性,会默认为submit,如果在子元素中会向上冒泡触发submit <button (click)=toDetail()>detail</button> toDetail() { this._router.navigate(['/detail']); } 解决方法: 1.添加type <button type=button (click)=toDetail()>detail</button> 2.click添加false <button (click)= 立即下载

相关推荐

StarRocks FE启动异常

服务器断电,StarRocks FE 启动失败。

qq_15138049的博客 1111

《angular2入门系列基础》——路由Route详解

前言      小编最近做ITOO前端项目的时候遇到路由跳转传参的一个问题,所以着手系统学习了Angular的路由的知识,现在分享给大家! 内容 路由的最基本的四个对象: 名称 功能介绍 Routes 路由配置,保存着url对应展示哪一个组件,及RouterOutlet展示组件 RouterOutlet Html中标记路由内容呈现位置的占位符指令 Rout...

xwnxwn的专栏 1076

LaMAR数据集下载和使用流程

LaMAR数据集

qq_51745206的博客 971

ANGULAR2 深入学习路由

基础 大多数带路由的应用都要在 index.html 的  标签下先添加一个  元素,来告诉路由器该如何合成导航用的 URL 。 如果 app 文件夹是该应用的根目录,那就把 href 的值设置为下面这样: 路由配置 首选方案是用带有“路由数组”的 provideRouter 工厂函数( [provideRouter(routes)] )来启动此应用。 myApp.r

huangyezi的专栏 1万+

sm2国密加密算法js实现(真实可用)

sm2国密加密算法js实现加密后内容引入文件js实现sm2加密 加密后内容 可自行验证是否是你需要的sm2加密算法 私钥:BF1F907B4E0487F798DC80AFD7BC2A6201E8514233002272EA3BE2FC6F797843 公钥:前缀04+x坐标+y坐标 042DBA45E7B03394F603CADAFCDDEC854D3E01A4E9C52CD799B85B1A14BDB970137AE58BA553D79F058604DC1CD4B77DE5408BA3308E767584

gusijin的博客 1万+

直流电动机的建模仿真(1)他励,串励和并励电动机建模仿真

本文根据不同励磁方式的直流电动机的接线原理图,建立了相应的数学模型,然后根据与数学模型对应的等效电路以及模拟机械运动方程的等效电路,用Matlab/simulink中的SpecializedPower system库中的电路元件,建立了他励,并励和串励直流电动机的全等效电路仿真模型,经过与Matlab自带的直流电动机仿真模型比较以及仿真实例验证,所建立的仿真模型时完全正确的。

weixin_45670943的博客 7513

Angular2路由器(路由+导航)

&nbsp; &nbsp; &nbsp; &nbsp;这里给大家简单的总结下Angular2路由器相关的一些信息。但是我一向认为最好的文档还是官方文档,还是推荐大家参考官方文档 https://www.angular.cn/guide/router#displaying-multiple-routes-in-named-outlets。 &nbsp; &nbsp; &nbsp; &nbsp;路由...

旧路 2752

已解决“TimeouEror [WinEror 10060由于连接方在一段时间后没有正确答复 或连接的主机没有反应,连接尝试失败“,亲测有效!!!

已解决"TimeouEror [WinEror 10060由于连接方在一段时间后没有正确答复 或连接的主机没有反应,连接尝试失败",亲测有效!!!

wbajsjhhhhh的博客 1万+

如何在Angular 2中设置基本路由

随着Angular 2的最新正式发布,现在是赶上一些最大变化的好时机。 发生了很大变化的一件事是Angular 2路由器,在最终版本的发布中已完全替换了它。 因此,在我的Angular 2路由课程的这两段快速视频教程中,我将向您展示如何创建路由配置以及如何在应用程序中使用它们。 您将了解简单的路由,重定向和通配符路由。 然后,您将看到如何使用指令来配置您的应用程序组件以显示路线。 这些...

代码教主 532

财务惊呼“不可能”!Python 自动识别 PDF 发票,数据秒级录入系统

电子发票(原生 PDF):这种最爽,文字是可以选中的。我们用 PyPDF2 直接提取文本,速度快,准确率 100%。 纸质扫描/拍照发票:这种是图片。必须上 OCR(光学字符识别)。我们要用百度开源的 PaddleOCR,这是目前中文识别效果最好的开源库之一,吊打早已过气的 Tesseract。

BUG猿的博客 1023

linux安装配置Mysql详细步骤

下载Mysql rpm包 官网下载:https://dev.mysql.com/downloads/mysql/ 如果你到了这里,本地应该有了如下四个rpm包: mysql-community-client-5.7.26-1.el6.x86_64.rpm mysql-community-common-5.7.26-1.el6.x86_64.rpm mysql-community-libs-5...

🏆 前端领域优质创作者 7万+

UI Router for Angular2

在Angular2中使用UI-Router--入门篇 1. UI-Router概述 2. UI-Router开发指南 3. UI-Router概述

老朴的博客 943

39、高频 LLC 谐振转换控制系统动态优化算法分析与研究

本文针对高频下LLC谐振转换器动态性能差的问题,提出一种基于谐振电容器充放电估计动态切换时间的优化控制算法。通过改进状态轨迹控制方法,突破传统算法在谐振频率与开关频率相等条件下的限制,并结合新型采样策略有效抑制电压过冲。算法在MATLAB和SABER中完成仿真验证,并搭建基于STM32F407的原型系统进行测试,结果表明该方法显著缩短动态响应时间,提升系统稳定性。研究为高频、高功率密度开关电源的动态优化提供了可行解决方案。

linux6sysadmin的博客 110

angular2中router-outlet使用

前文分析了vue.js的router-view的使用,本文分析一下angular2中的router-outlet的使用。其实angular2中的router-outlet标签与vue.js中的router-view标签的作用并无二次(react中有同名标签),所以由此可见这三大前端框架有很高的相似度。 router-outlet index.html是整个app的内容入口,如下: <!doctype html> <html lang="en"> <head>

weixin_41993525的博客 948

android 蓝牙通讯demo

android 下蓝牙通讯demo,实现了发现蓝牙,使能蓝牙,通过蓝牙发送消息。

ET2012新版免狗免安装绿色软件

ET2012新版免狗免安祖昂绿色软件。,新界面,新视觉,

angular/router vs 传统路由:为什么它是Angular应用的最佳选择

angular/router是Angular官方提供的路由库,专为构建单页应用(SPA)设计。与传统路由相比,它提供了更强大的功能和更优的性能,是Angular应用实现路由和导航的理想选择。本文将深入对比angular/router与传统路由的差异,帮助你理解为什么它能成为Angular应用的最佳路由解决方案。 ## 🌟 核心优势:angular/router如何超越传统路由 ### 1.

gitblog_00251的博客 1047

数学建模模型总结

这是本人在两年内准备参加数学建模竞赛搜集到的模型资料,已经经过了本人的筛选和整理,希望能够对准备参加数学建模竞赛的学弟学妹们提供一些帮助!

angular/router终极指南:构建动态Angular应用的路由神器

angular/router是一个基于Angular的路由库,提供了多种路由模式和功能,适合用于实现Angular应用程序的路由和导航。本指南将为你详细介绍如何利用这一强大工具构建动态、高效的单页应用。 ## 🌟 为什么选择angular/router? 在现代Web应用开发中,路由系统扮演着至关重要的角色。angular/router作为Angular官方推荐的路由解决方案,具有以下优势:

gitblog_00231的博客 902

霍尼韦尔SoftMaster使用说明

霍尼韦尔SoftMaster使用说明

Angular 路由启用指南:从零配置 Angular Router(provideRouter 与 RouterOutlet 实战解析)

当应用从单页走向多页面时,路由将成为影响用户体验与性能的关键基础设施。本篇技术指南围绕 Angular 官方教程 "Learn Angular" 的第 12 步([12-enable-routing 原文](https://link.gitcode.com/i/845fa503e4b663c2776c89f3c2bb3bce)),完整讲解如何为应用启用 Angular Router:包括创建 `a

gitblog_00496的博客 1003

[Angular] 笔记 18:Angular Router

chatgpt:Angular 具有内置的大量工具、功能和库,功能强大且经过良好设计,如组件化架构、依赖注入、模块化系统、路由和HTTP客户端等。这些功能可以直接用于项目中,无需额外的设置或第三方库。这简化了开发流程,因为不必从头编写或集成许多常见的功能,而是可以利用Angular提供的工具快速启动和构建应用程序。也就是说,Angular 是一种自带电池(Batteries Included)的框架,web 开发所需要的一切应用尽有,Router 是其中之一。

学习笔记 1407

angular路由笔记_Angular2学习笔记——路由器模型(Router)

Angular2以组件化的视角来看待web应用,使用Angular2开发的web应用,就是一棵组件树。组件大致分为两类:一类是如list、table这种通放之四海而皆准的通用组件,一类是专为业务开发的业务组件。实际开发中大部分时间我们都需要处理业务组件。对于SPA应用来说,一个通用的问题就是如何控制页面的切换,解决这个问题的通用方法就是利用路由器来实现。路由配置现在我们先撇开Angular2来看看...

weixin_39754267的博客 303

angular路由笔记_Angular 5.x 学习笔记之Router(路由)应用

本篇文章主要介绍了Angular 5.x 学习笔记之Router(路由)应用,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧序言:Angular APP 视图之间的跳转,依赖于 Router (路由),这一章,我们来讲述 Router 的应用实例讲解运行结果如下。 设置了3个导航栏, Home、 About、Dashboard。 点击不同的导航栏,跳转到相应的页面:创建...

weixin_39580748的博客 185

Angular router

基础用法 app.routing.module.ts import { NgModule } from '@angular/core'; import { Routes, RouterModule } from '@angular/router'; const routes: Routes = [ //定义路由数组 ]; @NgModule({ imports: [RouterModule.forRoot(routes)], exports: [RouterModule] }) export

weixin_41070695的博客 603

Angular4学习笔记(三):router

router:一条大路呦,通呀通我家

龙骑将的城堡 2万+

关于angular router-outlet

是一个Angular内置的指令,用于在我们的模板中显示路由器(router)加载的组件。在点击链接或使用编程式导航时,它会根据当前的URL动态地插入相应的组件。它可以嵌套在其他组件中,以创建更复杂的布局。可以使用name属性来定义多个命名的,以便同时显示多个组件。下面是一个基本的示例,展示了如何在你的应用程序中使用

X01动力装甲的专栏 2483

Angular DevTools Router Tree 面板实战:可视化、检查与直达导航 Angular 路由树

Angular DevTools 的 **Router Tree**(路由树)面板将应用的路由配置渲染为可视化树形结构,帮助你直观理解路由的嵌套关系、惰性加载与激活状态,并逐条检视守卫、解析器、Data 等路由级配置。本文以 Angular 仓库中 [tools/devtools/router.md](https://link.gitcode.com/i/e2cf73c28f0de76502657

gitblog_00347的博客 743

angular2 ( Router 路由 )

Angular2以组件化的视角来看待web应用,使用Angular2开发的web应用,就是一棵组件树。组件大致分为两类:一类是如list、table这种通放之四海而皆准的通用组件,一类是专为业务开发的业务组件。实际开发中大部分时间我们都需要处理业务组件。对于SPA应用来说,一个通用的问题就是如何控制页面的切换,解决这个问题的通用方法就是利用路由器来实现。路由配置现在我们先撇开Angular2来看看...

前端栈开发 744

angular/router实战案例:英雄编辑器应用的路由设计与实现

angular/router是一个基于Angular的路由库,提供了多种路由模式和功能,适合用于实现Angular应用程序的路由和导航。本文将通过英雄编辑器应用案例,详细介绍如何使用angular/router进行路由设计与实现,帮助新手快速掌握Angular路由开发技巧。 ## 🌟 英雄编辑器应用概述 英雄编辑器应用是angular/router的经典示例,展示了如何构建具有多视图、参数传

gitblog_00224的博客 947
上一篇: 【翻译】Java泛型中的extends与super
下一篇: JWT简介
chenping9318
博客等级 码龄10年 0粉丝 0原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符  | 博主筛选后可见
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值