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 相关文章推荐
Jquery数独游戏解析(一)-页面布局
Nov 05 Javascript
JS构建页面的DOM节点结构的实现代码
Dec 09 Javascript
JS+CSS制作DIV层可(最小化/拖拽/排序)功能实现代码
Feb 25 Javascript
javascript中typeof的使用示例
Dec 19 Javascript
使用jQuery和Bootstrap实现多层、自适应模态窗口
Dec 22 Javascript
第五章之BootStrap 栅格系统
Apr 25 Javascript
js滚轮事件兼容性问题需要注意哪些
Nov 15 Javascript
解析如何利用iframe标签以及js制作时钟
Dec 08 Javascript
bootstrap提示标签、提示框实现代码
Dec 28 Javascript
vue兄弟组件传递数据的实例
Sep 06 Javascript
spring+angular实现导出excel的实现代码
Feb 27 Javascript
vue模块移动组件的实现示例
May 20 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
人族 Terran 基本策略
2020/03/14 星际争霸
Symfony2之session与cookie用法小结
2016/03/18 PHP
科讯商业版中用到的ajax空间与分页函数
2007/09/02 Javascript
node.js中的fs.renameSync方法使用说明
2014/12/16 Javascript
jQuery实现滚动鼠标放大缩小图片的方法(附demo源码下载)
2016/03/05 Javascript
jQuery模仿京东/天猫商品左侧分类导航菜单效果
2016/06/29 Javascript
Easyui笔记2:实现datagrid多行删除的示例代码
2017/01/14 Javascript
jQuery事件对象的属性和方法详解
2017/09/09 jQuery
js原生日历的实例(推荐)
2017/10/31 Javascript
vue实现样式之间的切换及vue动态样式的实现方法
2017/12/19 Javascript
深入浅析vue组件间事件传递
2017/12/29 Javascript
利用Python绘制MySQL数据图实现数据可视化
2015/03/30 Python
Python 常用 PEP8 编码规范详解
2017/01/22 Python
详解python单元测试框架unittest
2018/07/02 Python
python实现爬虫抓取小说功能示例【抓取金庸小说】
2019/08/09 Python
Django认证系统实现的web页面实现代码
2019/08/12 Python
CSS3 :not()选择器实现最后一行li去除某种css样式
2016/10/19 HTML / CSS
html5+css3之制作header实例与更新
2020/12/21 HTML / CSS
香港No.1得奖零食网:香港零食大王
2016/07/22 全球购物
Expedia马来西亚旅游网站:廉价酒店,度假村和航班预订
2016/07/26 全球购物
Jo Malone美国官网:祖玛珑香水
2017/03/27 全球购物
Jeep牧马人、切诺基和自由人零配件:4 Wheel Drive Hardware
2017/07/02 全球购物
欧姆龙医疗保健与医疗产品:Omron Healthcare
2020/02/10 全球购物
北京振戎融通Java面试题
2015/09/03 面试题
品管员岗位职责
2013/11/10 职场文书
给领导的检讨书
2014/02/16 职场文书
平安建设实施方案
2014/03/19 职场文书
服务质量承诺书
2014/03/27 职场文书
股权转让协议书范本
2014/04/12 职场文书
法院先进个人事迹材料
2014/05/04 职场文书
碧霞祠导游词
2015/02/09 职场文书
秋收起义观后感
2015/06/11 职场文书
2016年春季趣味运动会开幕词
2016/03/04 职场文书
oracle覆盖导入dmp文件的2种方法
2021/05/21 Oracle
Python MNIST手写体识别详解与试练
2021/11/07 Python
新的CSS 伪类函数 :is() 和 :where()示例详解
2022/08/05 HTML / CSS