Angular 多级路由实现登录页面跳转(小白教程)


Posted in Javascript onNovember 19, 2019

本文受众是 Angular 初学者,没有多级路由使用经验,不知道登录页面与主页跳转的实现逻辑,相反,看到这里你就可以结束了,不要浪费时间。下面来看看小白对于登录页面的理解:

Angular 多级路由实现登录页面跳转(小白教程)

上图中左边是导航菜单栏,右边的空白区域是 <router-outlet> 所在区域,即所有实现业务逻辑的组件都在这里显示 - 点击左边导航栏的项目右侧B区域就替换为对应的页面,那么问题来了,登录页面要怎么做?

多级路由实现图

Angular 多级路由实现登录页面跳转(小白教程)

图有点大,看不清楚的放大点看吧。看了这个图相信一部分人已经懂了实现原理了。如果还是不懂,来看下面的文字讲解。

实现原理讲解

本文案例以 Angular + ng-zorro-antd 来讲解,如果使用了别的UI套件也没关系,原理都是一样的

  • 使用命令 ng new logindemo 创建项目
  • 在命令行界面使用 cd 切换当前路径为上面创建的项目的根目录下
  • 使用命令 ng add ng-zorro-antd 向项目中添加UI套件
  • 此时运行起来后大致就是本文的第一个图片的显示效果:左边是导航菜单,右边是变换显示业务组件的区域
  • 那么小白走到这里就被误导了,产生了本文初的疑惑,下面开始来解扣了。

项目创建好了,下面介绍改造项目的步骤:

注释掉文件 app.component.html 中的全部代码,并且添加一行:<router-outlet></router-outlet>

创建布局组件 layout ,将文件 app.component.html 中被注释的代码拷贝来,那么本组件的效果就是本文的第一个图片的布局效果了。拷贝来的代码中自带了路由插槽 <router-outlet></router-outlet> 那么到本页面中的路由插槽实际就是二级路由了。二级路由的代码如下:

const routes: Routes = [
 { 
  path:'',component:LayoutComponent,canActivate:[LayoutGuard],
  children:[
   { path: 'dbManager',loadChildren: () => 
    import('../dbmanager/dbmanager.module').then(m => m.DbmanagerModule) },

   { path: 'generateTree',loadChildren: () => 
    import('../gentree/gentree.module').then(m => m.GentreeModule) }
  ] 
 }
];

本组件的超链接中路径写法:<a routerLink="dbManager" >数据库管理器</a>,之前创建项目时的默认写法是:<a routerLink="/dbManager" >数据库管理器</a>,即只是去掉了 dbManager 前面的斜线。

那么在文件 app.component.ts 组件关联的路由文件 app-routing.module.ts 中的路由代码如下:

const routes: Routes = [
 { path: '', pathMatch: 'full', redirectTo: '/layout' },
 { path: 'login', loadChildren: () => 
  import('./pages/login/login.module').then(m => m.LoginModule) },
 { path: 'layout',loadChildren: () => 
  import('./pages/layout/layout.module').then(m => m.LayoutModule)}
];

这里的路由设置表示,当访问项目的空路径 localhost:4200 时会自动导航到组件 layout ,又由于该组件有路由守卫,如果没有登录那么会被转发到登录组件 login ,这个路由守卫是写在组件 layout 中的路由文件中的。当正常登录状态下打开组件 layout 的页面时就达到了本文的第一个图片的效果,右侧显示业务逻辑组件的页面。

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
解决js正则匹配换行问题实现代码
Dec 10 Javascript
IE6/IE7中JavaScript json提示缺少标识符、字符串或数字问题处理
Dec 16 Javascript
JavaScript函数的调用以及参数传递
Oct 21 Javascript
Vue方法与事件处理器详解
Dec 01 Javascript
利用JavaScript实现拖拽改变元素大小
Dec 14 Javascript
jquery.guide.js新版上线操作向导镂空提示jQuery插件(推荐)
May 20 jQuery
一篇文章让你彻底弄懂JS的事件冒泡和事件捕获
Aug 14 Javascript
元素全屏的设置与监听实例
Nov 28 Javascript
Vue组件内部实现一个双向数据绑定的实例代码
Apr 04 Javascript
layui富文本编辑器前端无法取值的解决方法
Sep 18 Javascript
javascript数组的定义及操作实例
Nov 10 Javascript
详解js创建对象的几种方式和对象方法
Mar 01 Javascript
nodemon实现Typescript项目热更新的示例代码
Nov 19 #Javascript
vue的三种图片引入方式代码实例
Nov 19 #Javascript
JS在Array数组中按指定位置删除或添加元素对象方法示例
Nov 19 #Javascript
JavaScript(js)处理的HTML事件、键盘事件、鼠标事件简单示例
Nov 19 #Javascript
VUEX-action可以修改state吗
Nov 19 #Javascript
Vue.extend 编程式插入组件的实现
Nov 18 #Javascript
浅谈Webpack4 Tree Shaking 终极优化指南
Nov 18 #Javascript
You might like
PHP setcookie设置Cookie用法(及设置无效的问题)
2011/07/13 PHP
PHP执行Curl时报错提示CURL ERROR: Recv failure: Connection reset by peer的解决方法
2014/06/26 PHP
php5.3提示Function ereg() is deprecated Error问题解决方法
2014/11/12 PHP
PHP语法小结之基础和变量
2015/11/22 PHP
Mootools 1.2教程 排序类和方法简介
2009/09/15 Javascript
js实现幻灯片播放图片示例代码
2013/11/07 Javascript
JS比较两个时间大小的简单示例代码
2013/12/20 Javascript
JQuery以JSON方式提交数据到服务端示例代码
2014/05/05 Javascript
js返回前一页刷新本页重载页面
2014/07/29 Javascript
javascript实现列表滚动的方法
2015/07/30 Javascript
JavaScript简单获取页面图片原始尺寸的方法
2016/06/21 Javascript
客户端(vue框架)与服务器(koa框架)通信及服务器跨域配置详解
2017/08/26 Javascript
vue实现通讯录功能
2018/07/14 Javascript
ExtJs使用自定义插件动态保存表头配置(隐藏或显示)
2018/09/25 Javascript
解决layer.confirm快速点击会重复触发事件的问题
2019/09/23 Javascript
JavaScript(js)处理的HTML事件、键盘事件、鼠标事件简单示例
2019/11/19 Javascript
jQuery实现轮播图效果
2019/11/26 jQuery
微信小程序跨页面传递data数据方法解析
2019/12/13 Javascript
python 实现插入排序算法
2012/06/05 Python
Python动态加载模块的3种方法
2014/11/22 Python
Python fileinput模块使用实例
2015/06/03 Python
一篇文章了解Python中常见的序列化操作
2019/06/20 Python
用Python实现最速下降法求极值的方法
2019/07/10 Python
Django自关联实现多级联动查询实例
2020/05/19 Python
Keras load_model 导入错误的解决方式
2020/06/09 Python
Django Admin后台模型列表页面如何添加自定义操作按钮
2020/11/11 Python
Python存储读取HDF5文件代码解析
2020/11/25 Python
jupyter notebook更换皮肤主题的实现
2021/01/07 Python
几款主流好用的富文本编辑器(所见即所得常用编辑器)介绍
2021/03/17 Javascript
Dockers美国官方网站:卡其裤、男士服装、鞋及配件
2016/11/22 全球购物
Herve Leger官网:标志性绷带连衣裙等
2018/12/26 全球购物
美国球迷装备的第一来源:FOCO
2020/07/03 全球购物
可以在一个PHP文件里面include另外一个PHP文件两次吗
2015/05/22 面试题
《珍珠泉》教学反思
2014/02/20 职场文书
2014基层党员干部学习全国两会心得体会
2014/03/17 职场文书
思想政治表现评语
2015/01/04 职场文书