日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 综合教程 >内容正文

综合教程

angular路由详解六(路由守卫)

發布時間:2024/8/24 综合教程 38 生活家
生活随笔 收集整理的這篇文章主要介紹了 angular路由详解六(路由守卫) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

路由守衛

CanActivate: 處理導航到某個路由的情況。

CanDeactivate:處理從當前路由離開的情況。

Resole:在路由激活之前獲取路由數據。

1.CanActivate: 處理導航到某個路由的情況。

新建一個文件PermissionGuard.ts

import {CanActivate,

ActivatedRouteSnapshot,
RouterStateSnapshot

} from '@angular/router';

export class PermissionGuard implements CanActivate{

  canActivate(route: ActivatedRouteSnapshot, state: RouterStateSnapshot):boolean{
  
  return false;
  }

}

在路由配置中配置

import { PermissionGuard } from './../PermissionGuard';

const routes: Routes = [
  {
  path:'message',
  component: MessageComponent,
  canActivate:[PermissionGuard],
  children:[
  {
  path:'messgeMenu',
  component: MessageMenuComponent,
  children:[
  {
  path:'list',
  component: MessageListComponent
  },{
  path:'',
  component: MessageDetailComponent
  }
  ]
}
]
}
]

在對應的Xxxmodule.ts文件中導入
import {PermissionGuard } from './../PermissionGuard';

providers:[PermissionGuard]


2.CanDeactivate:處理從當前路由離開的情況

新建一個文件focusGuard.ts
import {CanDeactivate } from "@angular/router";
import { XxxComponent } from ''./../xxxComponent";

export class FocusGuard implementsCanDeactivate <XxxComponent> {

  canDeactivate(component: XxxComponent){
  
    if (component.isFoucs()){
    return true;
    }else {
    return false;
    }  
  }
}

在路由配置中配置
import { FocusGuard} from './../PermissionGuard';

canDeactivate:[FocusGuard],

在對應的Xxxmodule.ts文件中導入
import { FocusGuard} from './../focusGuard';
//其實在實例化對象

providers:[FocusGuard]


3.Resole:在路由激活之前獲取路由數據

新建一個stock-resole.service.ts文件

import { Injectable } from '@angular/core';
import {
Resolve,
ActivatedRouteSnapshot,
RouterStateSnapshot
} from '@angular/router';
//導入股票數據模塊
import { Stock } from './stock';

import { Observable } from 'rxjs/Observable';

@Injectable()

export class StockResolveService implements Resolve<Stock>{

  resolve(route: ActivatedRouteSnapshot,state: RouterStateSnapshot): Stock | Observable<Stock> | Promise<Stock>{
    console.log(new Stock(1,"IBM"));

    return new Stock(1,"IBM");
  }
}


在xxx.module.ts文件中注入

import { StockResolveService } from './../stock-resolve.service';

providers:[StockResolveService]

在路由中配置

import { StockResolveService } from './../stock-resolve.service';
const mineRoutes: Routes = [
{
path:'mine',
component: MineComponent,
children: [

{path:'mineMenu',component: MineMenuComponent},
{path:'mineList', component: MineListComponent}
],
resolve:{
stock: StockResolveService
}
}
如果有用請給點支持,謝謝!

每一步都是一個深刻的腳印

總結

以上是生活随笔為你收集整理的angular路由详解六(路由守卫)的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。