angualr(二) 路由之a(chǎn)ngualr-router

創(chuàng)建項(xiàng)目

ng new router --routing  
\\ 加routing參數(shù)
\\ 會新增一個(gè)app-routing.module.ts 文件

路由的基本使用

名稱 簡介
Routes 路由的配置介却,保存著哪一個(gè)URL對應(yīng)展示哪一個(gè)組件和在哪一個(gè)RouterOutler展示
RouterOutler 在HTML中標(biāo)記路由內(nèi)容呈現(xiàn)的占位符指令
Router 運(yùn)行時(shí)執(zhí)行的路由對象蜒简,可以通過navigate()和navigateByUrl()方法來導(dǎo)航到指定路由
RouterLink 在HTML中聲明導(dǎo)航的指令
ActivatedRoute 當(dāng)前激活的路由對象,保存著當(dāng)前路由信息颤殴,路由地址谐区,路由參數(shù)

路由對象圖示

image.png

路由基本配置

const routes:Routes = [
  {path:'',component:HomeComponent},  \\ 注意path里面不要加\線
  {path:'app',component:AdminComponent}
];

路由通配符配置

{path:'**',component:Code404Component}
// 配置里面加一條代表沒有的都往這里叉瘩,注意這里不能寫在前面竟宋,不然angualr的路由會優(yōu)先匹配這里

HTML里面跳轉(zhuǎn)鏈接

<a [routerLink]="['/']">主頁</a>
<a [routerLink]="['/app']">后臺</a>
<router-outlet></router-outlet>

在js里面跳轉(zhuǎn)路由

<input type='button' value='跳轉(zhuǎn)到后臺' (click)="toApp()">
constructor(private router:Router){
  }
// 點(diǎn)擊事件
  toApp(){
    this.router.navigate(['/app'])
  }

路由數(shù)據(jù)傳遞

  1. 在查詢參數(shù)中傳遞數(shù)據(jù)
/app?id=2   => ActivatedRoute.queryParams[id]
//html寫法
<a [routerLink]="['/app']" [queryParams]="{id:1}">后臺</a>
// js寫法
private appId:number
  constructor(private routerInfo:ActivatedRoute) { }

  ngOnInit() {
    this.appId = this.routerInfo.snapshot.queryParams['id']
  }
  1. 在路由路徑中傳遞數(shù)據(jù)
{path:/app/:id} => /app/1  => ActivatedRoute.params[id]
// 必須先定義好
<a [routerLink]="['/app',1]">后臺</a>
  1. 在路由配置中傳遞數(shù)據(jù)
{path:/product,component:Appcomponent,data:[IsProd:true]}  => ActivatedRoute.data[0][IsProd]
參數(shù)快照和參數(shù)訂閱

snapshot 是參數(shù)快照當(dāng)路由進(jìn)入該組件的時(shí)候,然后再點(diǎn)擊按鈕進(jìn)入該路由路由里面的的ngOnInit()方法只執(zhí)行一次形纺,已經(jīng)被激活丘侠,說以第二次這個(gè)不會被執(zhí)行

ngOnInit() {
    this.appId = this.routerInfo.snapshot.queryParams['id']
  }

subscribe 是參數(shù)訂閱,這個(gè)屬于RxJs的東西

private appId:number

  constructor(private routerInfo:ActivatedRoute) { }

  ngOnInit() {
    this.routerInfo.params.subscribe((params:Params) => {
      this.appId = params['id']
    })
  }

重定向路由

{path:'',redirectTo:'/home',pathMatch:'full'},

子路由

{path:'home',component:HomeComponent,children:[
    {path:'',component:IndexComponent}
  ]},
// 記得去HomeComponent,里面添加<router-outlet></router-outlet>指令

輔助路由

// html 視圖部分
<router-outlet></router-outlet>
<router-outlet name='aux'></router-outlet>
//路由配置部分
{path:'app',Appcomponet,outlet:'aux'}

路由守衛(wèi)

只有當(dāng)用戶已經(jīng)登錄并擁有一些權(quán)限時(shí)才能進(jìn)入
多表單組成的向?qū)е鹧缱粤鞒涛献郑挥袧M足條件才能進(jìn)入下一個(gè)路由
用戶執(zhí)行操作沒有保存,試圖離開時(shí)候進(jìn)行相關(guān)提示

名稱 說明
CanAxtivate 處理導(dǎo)航到某路由
CanDeactivate 處理當(dāng)前路由離開
Resolve 在路由激活前獲取路由數(shù)據(jù)
  1. CanAxtivate的使用
// 新建一個(gè)文件
import {CanActivate} from '@angular/router'
export class LoginGuard implements CanActivate{
  // 路由會根據(jù)這個(gè)方法的返回如果返回false就拒絕訪問
  canActivate(){
    let isLOgin:boolean = true;
    return isLOgin;
  }
}
canActivate是一個(gè)數(shù)組脂新,可以接收多個(gè)挪捕,當(dāng)每一個(gè)都返回true時(shí)候才允許
// 修改路由配置,添加一個(gè)屬性canActivate
{path:'home',component:HomeComponent,children:[
    {path:'',component:IndexComponent}
  ],canActivate:[LoginGuard]},
修改NgModule
providers:[LoginGuard]

2.CanDeactivate的使用

// 新建一個(gè)文件
import {CanDeactivate} from '@angular/router'
import {AppComponent} from "../app.component";

/**
 * 處理用戶離開
 * 接收一個(gè)泛型
 */
export class OutGuard implements CanDeactivate<AppComponent>{
  // component 里面保存著AppComponent的數(shù)據(jù)
  canDeactivate(component:AppComponent){
    return window.confirm('您還沒有保存確定要離開嗎争便?')
  }
}
修改路由的配置
{path:'home',component:HomeComponent,children:[
    {path:'',component:IndexComponent}
  ],canActivate:[LoginGuard],canDeactivate:[OutGuard]},
providers:[LoginGuard,OutGuard]

3.Resolve 的使用

Resolve

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末级零,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子滞乙,更是在濱河造成了極大的恐慌奏纪,老刑警劉巖,帶你破解...
    沈念sama閱讀 219,270評論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件斩启,死亡現(xiàn)場離奇詭異序调,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)兔簇,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,489評論 3 395
  • 文/潘曉璐 我一進(jìn)店門发绢,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人垄琐,你說我怎么就攤上這事边酒。” “怎么了此虑?”我有些...
    開封第一講書人閱讀 165,630評論 0 356
  • 文/不壞的土叔 我叫張陵甚纲,是天一觀的道長。 經(jīng)常有香客問我朦前,道長介杆,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,906評論 1 295
  • 正文 為了忘掉前任韭寸,我火速辦了婚禮春哨,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘恩伺。我一直安慰自己赴背,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,928評論 6 392
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著凰荚,像睡著了一般燃观。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上便瑟,一...
    開封第一講書人閱讀 51,718評論 1 305
  • 那天缆毁,我揣著相機(jī)與錄音,去河邊找鬼到涂。 笑死脊框,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的践啄。 我是一名探鬼主播浇雹,決...
    沈念sama閱讀 40,442評論 3 420
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼屿讽!你這毒婦竟也來了昭灵?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,345評論 0 276
  • 序言:老撾萬榮一對情侶失蹤聂儒,失蹤者是張志新(化名)和其女友劉穎虎锚,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體衩婚,經(jīng)...
    沈念sama閱讀 45,802評論 1 317
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡窜护,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,984評論 3 337
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了非春。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片柱徙。...
    茶點(diǎn)故事閱讀 40,117評論 1 351
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖奇昙,靈堂內(nèi)的尸體忽然破棺而出护侮,到底是詐尸還是另有隱情,我是刑警寧澤储耐,帶...
    沈念sama閱讀 35,810評論 5 346
  • 正文 年R本政府宣布羊初,位于F島的核電站,受9級特大地震影響什湘,放射性物質(zhì)發(fā)生泄漏长赞。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,462評論 3 331
  • 文/蒙蒙 一闽撤、第九天 我趴在偏房一處隱蔽的房頂上張望得哆。 院中可真熱鬧,春花似錦哟旗、人聲如沸贩据。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,011評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽饱亮。三九已至矾芙,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間近上,已是汗流浹背蠕啄。 一陣腳步聲響...
    開封第一講書人閱讀 33,139評論 1 272
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留戈锻,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 48,377評論 3 373
  • 正文 我出身青樓和媳,卻偏偏與公主長得像格遭,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個(gè)殘疾皇子留瞳,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,060評論 2 355

推薦閱讀更多精彩內(nèi)容

  • Spring Cloud為開發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見模式的工具(例如配置管理拒迅,服務(wù)發(fā)現(xiàn),斷路器她倘,智...
    卡卡羅2017閱讀 134,665評論 18 139
  • 一:路由基礎(chǔ) 什么是路由: 在web開發(fā)中璧微,路由的概念由來已久,簡而言之硬梁,就是利用URL的唯一性來指定特定的事物前硫,...
    真的稻城閱讀 6,020評論 2 7
  • 路由要解決的核心問題是通過建立URL和頁面的對應(yīng)關(guān)系,使得不同的頁面可以用不同的URL表示荧止。在angular中屹电,頁...
    oWSQo閱讀 1,293評論 0 1
  • Android 自定義View的各種姿勢1 Activity的顯示之ViewRootImpl詳解 Activity...
    passiontim閱讀 172,180評論 25 707
  • 點(diǎn)點(diǎn)滴滴
    心靈是我獨(dú)舞的城池閱讀 152評論 0 0