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 相关文章推荐
Code:findPosX 和 findPosY
Dec 20 Javascript
JavaScript+CSS控制打印格式示例介绍
Jan 07 Javascript
javascript去除字符串左右两端的空格
Feb 05 Javascript
javascript编写贪吃蛇游戏
Jul 07 Javascript
基于Bootstrap的后台管理面板 Bootstrap Metro Dashboard
Jun 17 Javascript
详谈js对url进行编码和解码(三种方式的区别)
Aug 16 Javascript
JS数组交集、并集、差集的示例代码
Aug 23 Javascript
vue-router中scrollBehavior的巧妙用法
Jul 09 Javascript
Vue.js实现备忘录功能
Jun 26 Javascript
vue解决花括号数据绑定不成功的问题
Oct 30 Javascript
Js代码中的span拼接问题解决
Nov 22 Javascript
ant design vue 表格table 默认勾选几项的操作
Oct 31 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
用header 发送cookie的php代码
2007/03/16 PHP
php调用MySQL存储过程的方法集合(推荐)
2013/07/03 PHP
Laravel接收前端ajax传来的数据的实例代码
2017/07/20 PHP
PHP实现打包zip并下载功能
2018/06/12 PHP
PHP封装的简单连接MongoDB类示例
2019/02/13 PHP
ThinkPHP3.2.3框架Memcache缓存使用方法实例总结
2019/04/15 PHP
浅析PHP 中move_uploaded_file 上传中文文件名失败
2019/04/17 PHP
php实现通过stomp协议连接ActiveMQ操作示例
2020/02/23 PHP
javascript 实现子父窗体互相传值的简单实例
2014/02/17 Javascript
jQuery中 delegate使用的问题
2015/07/03 Javascript
详解如何实现一个简单的 vuex
2018/02/10 Javascript
vue select 获取value和lable操作
2020/08/28 Javascript
python中WSGI是什么,Python应用WSGI详解
2017/11/24 Python
详解Python3 中hasattr()、getattr()、setattr()、delattr()函数及示例代码数
2018/04/18 Python
一篇文章读懂Python赋值与拷贝
2018/04/19 Python
利用python将pdf输出为txt的实例讲解
2018/04/23 Python
python中不能连接超时的问题及解决方法
2018/06/10 Python
Python实现中值滤波去噪方式
2019/12/18 Python
Python3常见函数range()用法详解
2019/12/30 Python
Python利用PyPDF2库获取PDF文件总页码实例
2020/04/03 Python
CSS3哪些新特性值得称赞
2016/03/02 HTML / CSS
Html5 new XMLHttpRequest()监听附件上传进度
2021/01/14 HTML / CSS
世界上第一个水枕头:Mediflow
2018/12/06 全球购物
美国婴儿用品及配件购买网站:Munchkin
2019/04/03 全球购物
.NET程序员的几道面试题
2012/06/01 面试题
物业总经理岗位职责
2014/02/28 职场文书
高三学习决心书
2014/03/11 职场文书
小学关爱留守儿童活动方案
2014/08/25 职场文书
防灾减灾日活动总结
2014/08/26 职场文书
公司领导班子群众路线四风问题对照检查材料
2014/10/02 职场文书
青岛导游词
2015/02/12 职场文书
装饰技术负责人岗位职责
2015/04/13 职场文书
会议主持词结束语
2015/07/03 职场文书
导游词之丹东鸭绿江
2019/10/24 职场文书
Pycharm连接远程服务器并远程调试的全过程
2021/06/24 Python
SQL Server使用PIVOT与unPIVOT实现行列转换
2022/05/25 SQL Server