<output id="qn6qe"></output>

    1. <output id="qn6qe"><tt id="qn6qe"></tt></output>
    2. <strike id="qn6qe"></strike>

      亚洲 日本 欧洲 欧美 视频,日韩中文字幕有码av,一本一道av中文字幕无码,国产线播放免费人成视频播放,人妻少妇偷人无码视频,日夜啪啪一区二区三区,国产尤物精品自在拍视频首页,久热这里只有精品12

      Angular入門到精通系列教程(13)- 路由守衛(Route Guards)

      環境:

      • Angular CLI: 11.0.6
      • Angular: 11.0.7
      • Node: 12.18.3
      • npm : 6.14.6
      • IDE: Visual Studio Code

      1. 摘要

      在我們的實際的業務開發過程中,我們經常會遇到如下需求:

      1. 需要限制某些 URL 的可訪問性,例如,對于系統管理界面,只有那些擁有管理員權限的用戶才能打開。
      2. 當用戶處于編輯界面時,在沒有保存就離開時,需要提示用戶是否放棄修改。

      針對以上場景,Angualr使用路由守衛(Route Guards)來實現。

      2. 路由守衛(Route Guards)

      2.1. 創建路由守衛

      Angular CLI提供了命令行工具,可以快速創建路由守衛框架文件:ng generate guard auth。 執行后,Angular CLI會問我們需要實現哪些接口,我們直接勾選即可:

      ? Which interfaces would you like to implement? (Press <space> to select, <a> to toggle all, <i> to invert selection)
      >(*) CanActivate
       ( ) CanActivateChild
       ( ) CanDeactivate
       ( ) CanLoad
      

      說明:

      1. CanActivate: 控制路由是否可以激活
      2. CanActivateChild: 控制子路由是否可以激活
      3. CanDeactivate: 控制路由是否可以退出
      4. CanLoad: 控制模塊(module)是否可以被加載

      比較經常使用的是1、3,分別控制進入和退出。 按照上面配置,AngularCLI自動生成如下代碼,return true; 替換為我們實際的代碼即可。return false; 表示不允許跳轉,或者取消離開當前頁面。

      // auth.guard.ts
      import { Injectable } from '@angular/core';
      import { CanActivate, CanDeactivate, ActivatedRouteSnapshot, RouterStateSnapshot, UrlTree } from '@angular/router';
      import { Observable } from 'rxjs';
      
      @Injectable({
        providedIn: 'root'
      })
      export class AuthGuard implements CanActivate, CanDeactivate<unknown> {
        canActivate(
          route: ActivatedRouteSnapshot,
          state: RouterStateSnapshot): Observable<boolean | UrlTree> | Promise<boolean | UrlTree> | boolean | UrlTree {
          return true;
        }
      }
      

      在canActivate方法中,我們還可以使用跳轉。如頁面判斷是否已經登錄,如果沒有登錄,跳轉到Login頁面:

      this.router.navigate(['/login']);
      return false;
      

      2.2. 控制路由是否可以激活

      控制路由是否可以激活,需要定義在定義路由的地方,增加canActivate屬性。如果需要,還可以增加data屬性, 比如告訴我們的AuthGuard進入當前路由需要驗證哪些權限。data屬性是可選的。

      const routes: Routes = [
        {
          path: "page1",
          component: Page1Component,
          data: { permissions: ['YourPage1Permission'] },  // 傳入參數給AuthGuard,可選
          canActivate: [AuthGuard]
        },
        {
          path: "page2",
          component: Page2omponent,
          data: { permissions: ['YourPage2Permission'] },  // 傳入參數給AuthGuard,可選
          canActivate: [AuthGuard]
        }
      ]  
      

      2.3. 控制路由是否退出(離開)

      和控制路由是否可以激活類似,在路由定義出增加 canDeactivate,并制定相應的Guard守衛即可。這里不再舉例

      3. 總結

      1. 通過路由守衛(Route Guards)實現控制URL的進入和離開;
      2. Angular CLI可以輔助我們創建guard文件;



      ---------------- END ----------------






      ======================

      posted on 2021-01-25 16:50  Jack Niu  閱讀(919)  評論(0)    收藏  舉報

      Affiliate Marketing and Web Technology?
      主站蜘蛛池模板: 欧洲中文字幕一区二区| 欧美粗大| 亚洲国产一区二区三区久| 国产真实乱对白精彩久久| 成人一区二区三区在线午夜 | 久久99久国产精品66| 国产成人精品一区二区无| 黑人大群体交免费视频| 国产91麻豆视频免费看| 射阳县| 日本一区二区三深夜不卡| 69天堂人成无码免费视频| 又大又黄又粗高潮免费| 久久精品视频一二三四区| 久久婷婷综合色丁香五月| 亚洲精品国产自在现线最新| 男女啪祼交视频| 九九热在线免费视频精品| 日韩精品中文字幕人妻| 国产成人AV大片大片在线播放 | 亚洲国产成人一区二区在线| 中文字幕一区二区人妻电影| 国产最新AV在线播放不卡| 国产精品69人妻我爱绿帽子| 开江县| 成人免费乱码大片a毛片| 91老肥熟女九色老女人| 国产日韩精品一区二区在线观看播放| 亚洲精品动漫一区二区三| 成人做爰视频www| 国产成人精品三上悠亚久久| 日韩乱码人妻无码中文字幕视频| 精品人妻日韩中文字幕| 蜜桃av亚洲第一区二区| 狠狠干| 国产欧美亚洲精品第一页在线| 同德县| 亚洲国产精品综合久久20| 久久人妻无码一区二区三区av| 在线中文字幕第一页| 亚洲精品国产熟女久久久|