久久精品五月,日韩不卡视频在线观看,国产精品videossex久久发布 ,久久av综合

站長資訊網(wǎng)
最全最豐富的資訊網(wǎng)站

淺析Angular路由中的懶加載、守衛(wèi)、動態(tài)參數(shù)

淺析Angular路由中的懶加載、守衛(wèi)、動態(tài)參數(shù)

路由是將URL請求映射到具體代碼的一種機制,在網(wǎng)站的模塊劃分、信息架構(gòu)中扮演了重要的角色,而Angular的路由能力非常強大,我們一起來看看吧。【相關(guān)教程推薦:《angular教程》】

路由懶加載

Angular可以根據(jù)路由,動態(tài)加載相應(yīng)的模塊代碼,這個功能是性能優(yōu)化的利器。

為了加快首頁的渲染速度,我們可以設(shè)計如下的路由,讓首頁盡量保持簡潔、清爽:

const routes: Routes = [   {     path: '',     children: [       {         path: 'list',         loadChildren: () => import('./components/list/list.module').then(m => m.ListModule),       },       {         path: 'detail',         loadChildren: () => import('./components/detail/detail.module').then(m => m.DetailModule),       },       ...     ],   }, ];

首頁只有一些簡單的靜態(tài)元素,而其他頁面,比如列表、詳情、配置等模塊都用loadChildren動態(tài)加載。

效果如下:

淺析Angular路由中的懶加載、守衛(wèi)、動態(tài)參數(shù)

其中的components-list-list-module-ngfactory.js文件,只有當訪問/list路由時才會加載。

路由守衛(wèi)

當我們訪問或切換路由時,會加載相應(yīng)的模塊和組件,路由守衛(wèi)可以理解為在路由加載前后的鉤子,最常見的是進入路由的守衛(wèi)和離開路由的守衛(wèi):

  • canActivate 進入守衛(wèi)
  • canDeactivate 離開守衛(wèi)

比如我們想在用戶進入詳情頁之前,判斷他是否有權(quán)限,就可以使用canActivate守衛(wèi)。

增加路由守衛(wèi)

{   path: 'detail',   loadChildren: () => import('./components/detail/detail.module').then(m => m.DetailModule),    // 路由守衛(wèi)   canActivate: [AuthGuard], },

編寫守衛(wèi)邏輯

使用CLI命令創(chuàng)建路由守衛(wèi)模塊:

ng g guard auth

auth.guard.ts

import { Injectable } from '@angular/core'; import { CanActivate, ActivatedRouteSnapshot, RouterStateSnapshot, UrlTree } from '@angular/router'; import { Observable } from 'rxjs'; import { DetailService } from './detail.service';  @Injectable({   providedIn: 'root' }) export class AuthGuard implements CanActivate {   constructor(     private detailService: DetailService,   ) {}    canActivate(     route: ActivatedRouteSnapshot,     state: RouterStateSnapshot): Observable<boolean | UrlTree> | Promise<boolean | UrlTree> | boolean | UrlTree {     return new Observable(observer => {       // 鑒權(quán)數(shù)據(jù)從后臺接口異步獲取       this.detailService.getDetailAuth().subscribe((hasPermission: boolean) => {         observer.next(hasPermission);         observer.complete();       });     });   } }

獲取權(quán)限service

獲取權(quán)限的service:

ng g s detail

detail.service.ts

import {Injectable} from '@angular/core'; import { HttpClient } from '@angular/common/http';  @Injectable({ providedIn: 'root' }) export class DetailService {   constructor(     private http: HttpClient,   ) { }    getDetailAuth(): any {     return this.http.get('/detail/auth');   } }

效果如下:

淺析Angular路由中的懶加載、守衛(wèi)、動態(tài)參數(shù)

由于我們對/detail路由增加了守衛(wèi),不管是從別的路由切換到/detail路由,還是直接訪問/detail路由,都無法進入該頁面。

動態(tài)路由參數(shù)

在路由中帶參數(shù)有很多中方法:

  • 在path中帶參數(shù)
  • 在queryString中帶參數(shù)
  • 不通過鏈接帶參數(shù)

在path中帶參

{   path: 'user/:id',   loadChildren: () => import('./components/user/user.module').then(m => m.UserModule), },

在queryString中帶參數(shù)

html傳參

<a [routerLink]="['/list']" [queryParams]="{id: '1'}">...</a>

ts傳參

this.router.navigate(['/list'],{ queryParams: { id: '1' });

通過data傳遞靜態(tài)參數(shù)

注意:通過data傳遞的路由參數(shù)只能是靜態(tài)的

{   path: 'detail',   loadChildren: () => import('./components/detail/detail.module').then(m => m.DetailModule),      // 靜態(tài)參數(shù)   data: {     title: '詳情'   } },

通過resolve傳遞動態(tài)參數(shù)

data只能傳遞靜態(tài)參數(shù),那我想通過路由傳遞從后臺接口獲取到的動態(tài)參數(shù),該怎么辦呢?

答案是通過resolve配置。

{   path: 'detail',   loadChildren: () => import('./components/detail/detail.module').then(m => m.DetailModule),      // 動態(tài)路由參數(shù)   resolve: {     detail: DetailResolver   }, },

創(chuàng)建Resolver

detail.resolver.ts

import { Injectable } from '@angular/core'; import { Resolve, ActivatedRouteSnapshot, RouterStateSnapshot } from '@angular/router'; import { DetailService } from './detail.service';  @Injectable({ providedIn: 'root' }) export class DetailResolver implements Resolve<any> {    constructor(private detailService: DetailService) { }    resolve(route: ActivatedRouteSnapshot, state: RouterStateSnapshot): any {     return this.detailService.getDetail();   } }

在服務(wù)中增加獲取詳情數(shù)據(jù)的方法

detail.service.ts

import {Injectable} from '@angular/core'; import { HttpClient } from '@angular/common/http';  @Injectable({ providedIn: 'root' }) export class DetailService {   constructor(     private http: HttpClient,   ) { }    getDetailAuth(): any {     return this.http.get('/detail/auth');   }    // 增加的   getDetail(): any {     return this.http.get('/detail');   } }

獲取動態(tài)參數(shù)

創(chuàng)建組件

ng g c detial

detail.component.ts

import { Component, OnInit } from '@angular/core'; import { ActivatedRoute } from '@angular/router';  @Component({   selector: 'app-detail',   templateUrl: './detail.component.html',   styleUrls: ['./detail.component.scss'] }) export class DetailComponent implements OnInit {    constructor(     private route: ActivatedRoute,   ) { }    ngOnInit(): void {     // 和獲取靜態(tài)參數(shù)的方式是一樣的     const detail = this.route.snapshot.data.detail;     console.log('detail:', detail);   }  }

贊(0)
分享到: 更多 (0)
?
網(wǎng)站地圖   滬ICP備18035694號-2    滬公網(wǎng)安備31011702889846號
久久精品五月,日韩不卡视频在线观看,国产精品videossex久久发布 ,久久av综合
国产美女高潮在线| 欧美日韩精品一区二区视频| 女人av一区| 在线视频精品| 日韩在线观看一区二区三区| 91亚洲无吗| 捆绑调教美女网站视频一区| 91偷拍一区二区三区精品| 日韩精品诱惑一区?区三区| 五月婷婷六月综合| 亚洲综合不卡| 日韩精品导航| 日韩成人综合| 在线日韩视频| 日韩精彩视频在线观看| 精品资源在线| 蜜臀久久99精品久久久久宅男 | 国产91欧美| 午夜亚洲福利在线老司机| 午夜精品婷婷| 日韩专区欧美专区| 免播放器亚洲| 日本亚州欧洲精品不卡| 国产一级成人av| 色综合五月天| 丝袜美腿亚洲一区| 欧美天堂视频| 欧洲一区二区三区精品| 精品资源在线| 日本a口亚洲| 欧美欧美黄在线二区| 国产精品视频首页| 日韩精品视频在线看| 999精品在线| 日韩网站在线| 日韩精品一二区| 亚洲区欧美区| 欧美久久精品| 精品一区二区三区在线观看视频| 综合在线一区| 精品久久美女| 国产精品久久久久久久免费观看 | 首页国产欧美日韩丝袜| 国产精品红桃| 日本午夜大片a在线观看| 久久久久国产精品一区二区| 欧美日韩国产综合网| 国产亚洲欧美日韩精品一区二区三区| 国产精品a级| 麻豆国产91在线播放| 国产精品中文字幕制服诱惑| 在线天堂中文资源最新版| 国产综合亚洲精品一区二| 欧美一区激情| 好吊视频一区二区三区四区| 日韩欧美在线精品| 精品美女在线视频| 日日夜夜免费精品| 最新日韩欧美| 国产成人久久精品一区二区三区| 狠狠爱成人网| 久久青青视频| 青青草91视频| 999国产精品视频| 免费一区二区三区在线视频| 国产一区久久| 美女在线视频一区| 青青草伊人久久| 亚洲v天堂v手机在线| 亚洲欧洲一区二区天堂久久| 久久久久午夜电影| 日本久久黄色| 久久成人av| 国产欧美日韩精品一区二区免费 | 亚洲欧美综合| 欧美激情久久久久久久久久久| 日韩高清不卡一区| 伊人久久大香伊蕉在人线观看热v| 亚洲黄页一区| 欧美日韩国产在线一区| 久久天堂av| 欧美精品成人| 精品免费在线| 深夜福利视频一区二区| 国产精品va视频| 91成人福利| 久久久久久久久成人| 日韩av网站在线观看| 亚洲视频国产| 国产毛片精品久久| 精品伊人久久久| 国产一区二区三区四区五区 | 青青草伊人久久| 国产亚洲欧美日韩在线观看一区二区| 亚洲一区二区三区四区电影| 久久国产婷婷国产香蕉| 国产极品嫩模在线观看91精品| 国产精品porn| 国产精品成人**免费视频 | 国内精品麻豆美女在线播放视频| 国产精品超碰| 欧美二三四区| 中文字幕av亚洲精品一部二部| 一区二区三区四区精品视频| 日韩欧美四区| 日韩中文影院| 中文字幕日韩亚洲| 9999国产精品| 亚洲我射av| 91精品蜜臀一区二区三区在线| 欧美另类综合| 大香伊人久久精品一区二区| 久久狠狠婷婷| 日韩在线一区二区| 四虎成人av| 亚洲一级大片| 国产在线观看www| 一区二区高清| 黄色成人91| 欧美一级鲁丝片| 久久国产免费看| 亚洲精品大片| 亚洲女人av| 日本不良网站在线观看| 日韩国产在线一| 日韩网站中文字幕| 成人国产精选| 99视频一区| 亚洲成人精品| 黄色精品视频| 国产精品久久久久久久久免费高清 | 一区二区三区视频免费观看| 日韩在线观看一区二区| 精品视频网站| 免费成人av在线播放| 日韩在线观看| 欧美日韩尤物久久| 精品国产aⅴ| 亚洲精品九九| 国产亚洲精品美女久久 | 欧美一区网站| 欧美午夜不卡| 综合色一区二区| 999在线观看精品免费不卡网站| 国产v日韩v欧美v| 水蜜桃久久夜色精品一区| 久久天堂影院| 国产videos久久| 日韩大片在线| 亚洲欧洲另类| 国产欧美综合一区二区三区| 日本不卡在线视频| 欧美91在线|欧美| 日韩高清中文字幕一区| 国产精品xxx在线观看| 麻豆精品蜜桃视频网站| 欧洲一级精品| 日韩有吗在线观看| 久久精品97| 青青青免费在线视频| 亚洲成av人片一区二区密柚| 狠狠干成人综合网| 日欧美一区二区| 精品精品国产三级a∨在线| 在线手机中文字幕| 在线看片日韩| 岛国av在线网站| 亚洲欧美网站| 国产日本精品| 黄色在线一区| 国产精品宾馆| 午夜精品婷婷| 精品国产黄a∨片高清在线| 亚洲成人va| 欧美日韩视频免费看| 欧美日韩国产在线一区| 青青国产91久久久久久| av亚洲一区二区三区| 日韩精品导航| 日韩视频一区二区三区在线播放免费观看| 国产精品国码视频| 丝袜美腿一区二区三区| 久久精品国产亚洲一区二区三区| 久久免费大视频| 国产一区二区三区成人欧美日韩在线观看 | 亚洲美女91| 国产欧美三级| 蜜臀av免费一区二区三区| 奇米亚洲欧美| 免费不卡中文字幕在线| 国产精品资源| 亚洲涩涩av| 日本大胆欧美人术艺术动态| 国精品一区二区三区| 91精品一区二区三区综合| 色婷婷色综合| 国产精品视频3p| 蜜桃视频在线观看一区| 在线看片不卡| 国产一区视频在线观看免费|