Angular路由知识点
路由跳转
1. 模板方式:<ANY routerLink='/ucenter'></ANY>
2. 脚本方式: constructor(private router:Router){ }
this.router.navigateByUrl('/ucenter')
路由参数:
1.{path:'product/detail/:lid',component: ...}
2.<ANY routerLink="/product/detail/">
3.ProductDetailComponent.ts
constructor(private route:ActivatedRoute,private http:HttpClient){ }
ngOnInit(){
this.route.params.subscribe((data)=>{data.lid})
}
练习:创建下述组件:
ng g component index 点击超链接,可以跳转到用户中心
ng g component user-center
ng g not-found
为每个组件分配路由地址:app.module.ts
indexComponent: ""
UserCenterComponent: "user/center"
NotFoundComponent: "**"
声明路由组件的挂载点/路由出口: app.component.html
<router-outlet></router-outlet>
访问测试:
点击超链接,可以跳转到用户中心-----用两种方法实现
1.补充知识点:路由嵌套
一级路由:
index: 首页
user/center:用户中心
二级路由:
user/center/info: 用户中心>我的信息
user/center/avatar: 用户中心>更改头像
user/center/security: 用户中心>安全管理
路由嵌套修改路由词典:
const routes = [
{ path:'index',component:IndexComponent },
{
path:'user/center',
component:UserCenterComponent,
children:[
{ path:'info',component: InfoComponent },
{ path:'avatar',component: AvatarComponent},
{ path:'security',component: SecurityComponent }
]
}
]
注意:"用户中心"下的二级路由组件挂载点/路由出口应该放在UserCenter.component.html中
2.补充知识点:路由守卫
商业项目中,有些路由地址只能在特定条件下才能访问,例如;
用户中心,只能在登录后访问(回话限制);
TMOOC视频播放,只能在学校内播放(客户端IP地址限制);
VIP学院视频播放,只能自13:00~220:00时间内才能播放(时间限制);
商城后台所有页面,只能登录为管理员后才能使用(权限限制);
.....
Angular提供了“路由守卫(Guard)‘’来实现访问路由组件前的检查功能:如果检查通过(return true)就放行;
如果检查不通过(return false)就阻止访问。
使用路由守卫的步骤:
1.创建路由守卫class ----- 可使用 ng generate guard 守卫名
@Injectable({ providedIn:'root' })
export class LoginGuard{
canAactivate(){
return true //允许激活
return false //阻止激活
}
}
2.在路由词典中使用路由守卫
{path:'',component:..,canActivate:[LoginGuard]}
练习:创建路由守卫TimeGuard,检测当前系统时间,如果在6点~23点之间允许访问,
否则不允许访问;把此守卫用于“用户中心”组件。
3.创建移动App可用技术
技术名称 典型代表 优势 劣势
原生开发 Android:Java或Kotlin 运行速度快、功能丰富 两张设备互不兼容,开发速度慢
Native Code IOS:Object-C或Swift
--------------------------------------------------------------------------------------------------------------
WebView开发 Vue.js + Mint-UI 开发速度快 运行速度慢、功能有限
HTML5/CSS/JS
--------------------------------------------------------------------------------------------------------------
混编开发 Phonegap/Cordova 开发速度快、 运行速度慢
H5 + 原生 Angular + lonic 功能丰富
--------------------------------------------------------------------------------------------------------------
JS Bridge React + ReactNative 开发速度快、 两种平台下原生
编码是JS,运行的是原生代码 运行速度快、 组件效果不一样
功能丰富
------------------------------------------------------------------------------------------------------------
GPU绘图 Google Flutter/Dart 运行速度快、 目前还有不足(例如绘图库
功能丰富、 代码过大)
两种平台下的效果完全一样
-----------------------------------------------------------------------------------------------------------------
关于Vue.js的组件库/资料: github搜 awesome vue
关于Angular的组件库/资料: github搜 awesome angular
关于React的组件库/资料: github搜 awesome react
Angular路由知识点的更多相关文章
- angular路由——ui.route
angular路由 使用案例 <!DOCTYPE html> <html lang="en"> <head> <meta charset= ...
- angular路由详解:
1.$routeProvider ngRoute模块中的服务 2.otherwise:设置用于路由改变时,与任何其他定义的路由无法匹配的时候执行的代码 3.when:为$route服务定义新的路由 例 ...
- angular 路由的引用
使用angular路由 遇到的坑. 使用cmd 安装好node.js 安装成功 输入node -v 能查看版本说明安装成功 搭建angular项目输入命令 npm install -g angu ...
- angular 路由项目例子
angular 路由是我在工作中体验非常便捷的一点, 这是详细的API ,查看API 可以了解很多东西, https://github.com/angular-ui/ui-router/wiki/Qu ...
- Angular路由参数传递
一.路由时传递参数的方式 1.在查询参数中传递数据 //页面 <a routerLink="/product" [queryParams]="{id:1}" ...
- angular路由(自带路由篇)
一.angular路由是什么? 为了实现SPA多视图的切换的效果,其原理可简述为每个 URL 都有对应的视图和控制器.所以当我们给url后面拼上不同的参数就能通过路由实现不同视图的切换. 二.文件总览 ...
- Angular路由守卫 canActivate
作用 canActivate 控制是否允许进入路由. canActivateChild 等同 canActivate,只不过针对是所有子路由. 关键代码 创建路由守卫 import { Injecta ...
- Angular路由守卫 canDeactivate
目的 离开页面时,做出逻辑判断 以ng-alain的项目为基础做演示 效果如图: 关键代码 定义一个CanDeactivateGuardService export class CanDeactiva ...
- Angular 路由守卫
1. 路由 Angular路由: 可以控制页面跳转:可以在多视图间切换: 2. 路由守卫 Angular路由守卫: 在进入或离开某路由时,用于判断是否可以离开.进入某路由::: return true ...
随机推荐
- 设置 cipher suite
https://man.openbsd.org/SSL_CTX_set_cipher_list.3#ECDHE SSL_CTX_set_cipher_list() sets the list of a ...
- js 之 JSON详解
JSON:JavaScriptObjectNotation JSON是一种语法,用来序列化对象.数组.字符串.布尔值和null. JSON是基于JavaScript的语法,但与之不同 注意事项 JSO ...
- 【JAVA基础】11 Scanner类
1. Scanner的概述 一个可以使用正则表达式来解析基本类型和字符串的简单文本扫描器. Scanner 使用分隔符模式将其输入分解为标记,默认情况下该分隔符模式与空白匹配.然后可以使用不同的 ne ...
- 打造更好用的 EF 自动审计
打造更好用的 EF 自动审计 Intro 上次基于 EF Core 实现了一个自动审计的功能,详细可以参考 https://www.cnblogs.com/weihanli/p/auto-audit- ...
- 《高性能Linux服务器构建实战》——第1章轻量级HTTP服务器Nginx
第1章 轻量级HTTP服务器Nginx本章主要介绍Nginx的配置管理和使用.作为一个轻量级的HTTP服务器,Nginx与Apache相比有以下优势:在性能上,它占用很少的系统资源,能支持更多的并发连 ...
- 4.shell基本操作简介
判断一个命令是不是内置命令,可以用type命令 1.printf :冒号 #:〉 test.txt 这里会建立一个空文件test.txt set -o|grep emacs 查看 emacs 模式是 ...
- CentOS 6.5下通过yum安装MongoDB记录
安装MongoDB 1.创建repo vi /etc/yum.repos.d/mongodb-org-3.6.repo [mongodb-org-3.6] name=MongoDB Repos ...
- #Week8 Advice for applying ML & ML System Design
一.Evaluating a Learning Algorithm 训练后测试时如果发现模型表现很差,可以有很多种方法去更改: 用更多的训练样本: 减少/增加特征数目: 尝试多项式特征: 增大/减小正 ...
- FTP服务器项目的一些整理
几个月前按照网上的教程写了一个FTP的服务器,现在回头整理一下里面的一些知识. FTP简介 FTP是文件传输协议(File Transfer Protocol),工作在TCP/IP协议族的应用层,其传 ...
- Python高级编程-Python一切皆对象
Python高级编程-Python一切皆对象 Python3高级核心技术97讲 笔记 1. Python一切皆对象 1.1 函数和类也是对象,属于Python的一等公民 ""&qu ...