欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Angular 多級(jí)路由實(shí)現(xiàn)登錄頁(yè)面跳轉(zhuǎn)(小白教程)

 更新時(shí)間:2019年11月19日 14:40:05   作者:葬天塵  
這篇文章主要介紹了Angular 多級(jí)路由實(shí)現(xiàn)登錄頁(yè)面跳轉(zhuǎn)(小白教程),文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧

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

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

多級(jí)路由實(shí)現(xiàn)圖

圖有點(diǎn)大,看不清楚的放大點(diǎn)看吧。看了這個(gè)圖相信一部分人已經(jīng)懂了實(shí)現(xiàn)原理了。如果還是不懂,來看下面的文字講解。

實(shí)現(xiàn)原理講解

本文案例以 Angular + ng-zorro-antd 來講解,如果使用了別的UI套件也沒關(guān)系,原理都是一樣的

  • 使用命令 ng new logindemo 創(chuàng)建項(xiàng)目
  • 在命令行界面使用 cd 切換當(dāng)前路徑為上面創(chuàng)建的項(xiàng)目的根目錄下
  • 使用命令 ng add ng-zorro-antd 向項(xiàng)目中添加UI套件
  • 此時(shí)運(yùn)行起來后大致就是本文的第一個(gè)圖片的顯示效果:左邊是導(dǎo)航菜單,右邊是變換顯示業(yè)務(wù)組件的區(qū)域
  • 那么小白走到這里就被誤導(dǎo)了,產(chǎn)生了本文初的疑惑,下面開始來解扣了。

項(xiàng)目創(chuàng)建好了,下面介紹改造項(xiàng)目的步驟:

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

創(chuàng)建布局組件 layout ,將文件 app.component.html 中被注釋的代碼拷貝來,那么本組件的效果就是本文的第一個(gè)圖片的布局效果了??截悂淼拇a中自帶了路由插槽 <router-outlet></router-outlet> 那么到本頁(yè)面中的路由插槽實(shí)際就是二級(jí)路由了。二級(jí)路由的代碼如下:

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ù)庫(kù)管理器</a>,之前創(chuàng)建項(xiàng)目時(shí)的默認(rèn)寫法是:<a routerLink="/dbManager" >數(shù)據(jù)庫(kù)管理器</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)訪問項(xiàng)目的空路徑 localhost:4200 時(shí)會(huì)自動(dòng)導(dǎo)航到組件 layout ,又由于該組件有路由守衛(wèi),如果沒有登錄那么會(huì)被轉(zhuǎn)發(fā)到登錄組件 login ,這個(gè)路由守衛(wèi)是寫在組件 layout 中的路由文件中的。當(dāng)正常登錄狀態(tài)下打開組件 layout 的頁(yè)面時(shí)就達(dá)到了本文的第一個(gè)圖片的效果,右側(cè)顯示業(yè)務(wù)邏輯組件的頁(yè)面。

以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

最新評(píng)論