Angular 多級路由實現(xiàn)登錄頁面跳轉(zhuǎn)(小白教程)
本文受眾是 Angular 初學(xué)者,沒有多級路由使用經(jīng)驗,不知道登錄頁面與主頁跳轉(zhuǎn)的實現(xiàn)邏輯,相反,看到這里你就可以結(jié)束了,不要浪費時間。下面來看看小白對于登錄頁面的理解:

上圖中左邊是導(dǎo)航菜單欄,右邊的空白區(qū)域是 <router-outlet> 所在區(qū)域,即所有實現(xiàn)業(yè)務(wù)邏輯的組件都在這里顯示 - 點擊左邊導(dǎo)航欄的項目右側(cè)B區(qū)域就替換為對應(yīng)的頁面,那么問題來了,登錄頁面要怎么做?
多級路由實現(xiàn)圖

圖有點大,看不清楚的放大點看吧??戳诉@個圖相信一部分人已經(jīng)懂了實現(xiàn)原理了。如果還是不懂,來看下面的文字講解。
實現(xiàn)原理講解
本文案例以 Angular + ng-zorro-antd 來講解,如果使用了別的UI套件也沒關(guān)系,原理都是一樣的
- 使用命令 ng new logindemo 創(chuàng)建項目
- 在命令行界面使用 cd 切換當(dāng)前路徑為上面創(chuàng)建的項目的根目錄下
- 使用命令 ng add ng-zorro-antd 向項目中添加UI套件
- 此時運行起來后大致就是本文的第一個圖片的顯示效果:左邊是導(dǎo)航菜單,右邊是變換顯示業(yè)務(wù)組件的區(qū)域
- 那么小白走到這里就被誤導(dǎo)了,產(chǎn)生了本文初的疑惑,下面開始來解扣了。
項目創(chuàng)建好了,下面介紹改造項目的步驟:
注釋掉文件 app.component.html 中的全部代碼,并且添加一行:<router-outlet></router-outlet>
創(chuàng)建布局組件 layout ,將文件 app.component.html 中被注釋的代碼拷貝來,那么本組件的效果就是本文的第一個圖片的布局效果了??截悂淼拇a中自帶了路由插槽 <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" >數(shù)據(jù)庫管理器</a>,之前創(chuàng)建項目時的默認(rèn)寫法是:<a routerLink="/dbManager" >數(shù)據(jù)庫管理器</a>,即只是去掉了 dbManager 前面的斜線。
那么在文件 app.component.ts 組件關(guān)聯(lián)的路由文件 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)}
];
這里的路由設(shè)置表示,當(dāng)訪問項目的空路徑 localhost:4200 時會自動導(dǎo)航到組件 layout ,又由于該組件有路由守衛(wèi),如果沒有登錄那么會被轉(zhuǎn)發(fā)到登錄組件 login ,這個路由守衛(wèi)是寫在組件 layout 中的路由文件中的。當(dāng)正常登錄狀態(tài)下打開組件 layout 的頁面時就達到了本文的第一個圖片的效果,右側(cè)顯示業(yè)務(wù)邏輯組件的頁面。
以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
解決Angularjs異步操作后臺請求用$q.all排列先后順序問題
解決Angularjs異步操作后臺請求用$q.all排列先后順序問題,非常不錯,具有一定的參考借鑒價值,需要的朋友可以參考下2019-11-11
AngularJS基礎(chǔ) ng-list 指令詳解及示例代碼
本文主要介紹AngularJS ng-list 指令,這里幫大家整理了ng-list指令的基本資料,并附有示例代碼,有需要的小伙伴可以參考下2016-08-08
詳解AngularJS1.6版本中ui-router路由中/#!/的解決方法
本篇文章主要介紹了詳解AngularJS1.6版本中ui-router路由中/#!/的解決方法,非常具有實用價值,需要的朋友可以參考下2017-05-05
Angular應(yīng)用Bootstrap過程步驟邏輯詳解
這篇文章主要為大家介紹了Angular應(yīng)用Bootstrap過程步驟邏輯詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪2023-07-07
angular安裝import?echarts?from‘echarts‘標(biāo)紅報錯解決
這篇文章主要介紹了angular安裝import?echarts?from‘echarts‘標(biāo)紅報錯解決,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪2023-10-10
Angularjs 實現(xiàn)動態(tài)添加控件功能
這篇文章主要介紹了Angularjs 實現(xiàn)動態(tài)添加控件功能,非常不錯,具有參考借鑒價值,需要的朋友可以參考下2017-05-05
angular 表單驗證器驗證的同時限制輸入的實現(xiàn)
表單驗證是經(jīng)常用到一個東西,這篇文章主要介紹了angular 表單驗證器驗證的同時限制輸入的實現(xiàn),具有一定的參考價值,感興趣的小伙伴們可以參考一下2019-04-04

