Angular 入坑 02

Angular 路由

路由是連接組件的, 它是樹形結(jié)構(gòu)的, 可以使用它在 angular 中實(shí)現(xiàn)路徑的導(dǎo)航模式
可以將路由看成是一組規(guī)則, 它決定了url的變化對應(yīng)著哪一種狀態(tài), 具體表現(xiàn)就是不同視圖的切換, 在 Angular 中, 路由時(shí)非常重要的組成部分, 組件的實(shí)例化與銷毀, 模塊的加載, 組件的生命周期鉤子的發(fā)起都與它有關(guān).

路由的基本使用

路由器是一個(gè)調(diào)度中心, 它是一套規(guī)則的列表, 能偶查詢當(dāng)前 URL 對應(yīng)的規(guī)則, 并展示出相應(yīng)的視圖
路由是列表里面的一個(gè)規(guī)則, 即路由定義, 它有很多功能字段

  • path字段, 表示該路由中的URL路徑部分
  • Component字段, 表示與該路由相關(guān)聯(lián)的操作

每個(gè)帶路由的 Angular 應(yīng)用都有一個(gè)路由器服務(wù)的單例對象, 通過路由定義的列表進(jìn)行配置后使用

app-routing.module.ts

import { NgModule } from '@angular/core';
import { RouterModule, Routes } from '@angular/router';
import { HomeComponent } from './home/home.component';

// 路由配置
const routes: Routes = [
  {
    // 此處實(shí)現(xiàn)默認(rèn)進(jìn)到應(yīng)用中就進(jìn)入 HomeComponent 組件
    path: '',
    component: HomeComponent
  },
  {
    path: 'home',
    component: HomeComponent
  },
  {
    // 使用通配符進(jìn)行匹配路由
    path: '**',
    component: HomeComponent
  }
];

@NgModule({
  imports: [RouterModule.forRoot(routes)],
  exports: [RouterModule]
})
export class AppRoutingModule { }

在 HTML 中需要使用 router-outlet 去顯示路由中的內(nèi)容, 類似于 Vue 中的router-view

<span>{{ title }} app is running!</span>

<!-- 第一個(gè)參數(shù)填寫要跳轉(zhuǎn)的路徑, 第二個(gè)參數(shù)是如果當(dāng)前路由是要跳轉(zhuǎn)的路由, 就會給當(dāng)前的 a 添加一個(gè)類 "router-link-active" -->
<a [routerLink]="['/home']" routerLinkActive="router-link-active">首頁</a>

<router-outlet></router-outlet>

上述具體的工作流程, 可以描述為

  • 當(dāng)瀏覽器地址欄的 URL 變化時(shí), 路徑部分 /home 滿足了列表中的 path 為 home 的這個(gè)路由定義, 激活了對應(yīng)的實(shí)例, 顯示視圖

路由的嵌套

父子路由嵌套配置

app-routing.module.ts

{
  path: 'parent',
  component: HomeComponent,
  children: [
    {
      path: 'child',
      component: ChildComponent
    }
  ]
}

記得需要在 HomeComponent 中同樣加上 router-outlet 就可以了, 注意在跳轉(zhuǎn)到子路由時(shí)候, 需要加上全路徑

路由傳參

query

在 a 標(biāo)簽上添加一個(gè)參數(shù) queryParams, 并通過 this.routerinfo.snapshot.queryParams 獲取參數(shù)
query 形式的傳參會顯示的路由URL上

<a [routerLink]="['/home']" [queryParams]="{id:3}">home</a>

在目標(biāo)路由中可以接收參數(shù)

import { ActivateRoute } from '@angular/router';
constructor(private routerinfo:ActivateRoute) { }

ngOnInit() {
    // id 為參數(shù)名字
    this.id = this.routerinfo.snapshot.queryParams['id']
}
params

吸怪路由配置文件path, 路由導(dǎo)航a標(biāo)簽 routerLink 后面數(shù)組的第二個(gè)參數(shù)為傳遞到值, 并通過 subscribe 的方式獲取 name 參數(shù)

{
  path: 'home/:name',
  component: HomeComponent
}
<a [routerLink]="['/home', '我是url傳遞的參數(shù)']" [queryParams]="{id:3}">home</a>
import { ActivateRoute } from '@angular/router';
constructor(private routerinfo:ActivateRoute) { }

ngOnInit() {
    this.id = this.routerinfo.params.subscribe((params:Params) =>{
        this.name = params['name']
    })
}
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末舞箍,一起剝皮案震驚了整個(gè)濱河市蓉驹,隨后出現(xiàn)的幾起案子麦锯,更是在濱河造成了極大的恐慌,老刑警劉巖,帶你破解...
    沈念sama閱讀 217,734評論 6 505
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件昧港,死亡現(xiàn)場離奇詭異召调,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)瓣距,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,931評論 3 394
  • 文/潘曉璐 我一進(jìn)店門黔帕,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人蹈丸,你說我怎么就攤上這事成黄∧沤妫” “怎么了?”我有些...
    開封第一講書人閱讀 164,133評論 0 354
  • 文/不壞的土叔 我叫張陵奋岁,是天一觀的道長思瘟。 經(jīng)常有香客問我,道長闻伶,這世上最難降的妖魔是什么滨攻? 我笑而不...
    開封第一講書人閱讀 58,532評論 1 293
  • 正文 為了忘掉前任,我火速辦了婚禮蓝翰,結(jié)果婚禮上光绕,老公的妹妹穿的比我還像新娘。我一直安慰自己畜份,他們只是感情好诞帐,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,585評論 6 392
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著爆雹,像睡著了一般停蕉。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上钙态,一...
    開封第一講書人閱讀 51,462評論 1 302
  • 那天慧起,我揣著相機(jī)與錄音,去河邊找鬼册倒。 笑死蚓挤,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的驻子。 我是一名探鬼主播屈尼,決...
    沈念sama閱讀 40,262評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼拴孤!你這毒婦竟也來了脾歧?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,153評論 0 276
  • 序言:老撾萬榮一對情侶失蹤演熟,失蹤者是張志新(化名)和其女友劉穎鞭执,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體芒粹,經(jīng)...
    沈念sama閱讀 45,587評論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡兄纺,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,792評論 3 336
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了化漆。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片估脆。...
    茶點(diǎn)故事閱讀 39,919評論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖座云,靈堂內(nèi)的尸體忽然破棺而出疙赠,到底是詐尸還是另有隱情付材,我是刑警寧澤,帶...
    沈念sama閱讀 35,635評論 5 345
  • 正文 年R本政府宣布圃阳,位于F島的核電站厌衔,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏捍岳。R本人自食惡果不足惜富寿,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,237評論 3 329
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望锣夹。 院中可真熱鬧页徐,春花似錦、人聲如沸银萍。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,855評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽砖顷。三九已至,卻和暖如春赃梧,著一層夾襖步出監(jiān)牢的瞬間滤蝠,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 32,983評論 1 269
  • 我被黑心中介騙來泰國打工授嘀, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留物咳,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 48,048評論 3 370
  • 正文 我出身青樓蹄皱,卻偏偏與公主長得像览闰,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個(gè)殘疾皇子巷折,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,864評論 2 354

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

  • 一压鉴、SPA的概念 首先明確一個(gè)概念,SPA锻拘,全稱為Single Page Application單頁應(yīng)用油吭,一個(gè)單頁...
    耦耦閱讀 5,947評論 0 3
  • Angular 創(chuàng)建一個(gè)Angular項(xiàng)目 前提準(zhǔn)備 安裝node、npm 安裝Angular CLI 創(chuàng)建新項(xiàng)目...
    涙_閱讀 205評論 0 0
  • 摘要:在本教程中署拟,Ahmed Bouchefra 介紹了angular路由器(router),以及如何使用它創(chuàng)建客...
    哈維爾23456閱讀 3,278評論 0 3
  • 路由是 Angular 應(yīng)用程序的核心婉宰,它加載與所請求路由相關(guān)聯(lián)的組件,以及獲取特定路由的相關(guān)數(shù)據(jù)推穷。這允許我們通過...
    semlinker閱讀 12,177評論 4 16
  • 作者:王芃 wpcfan@gmail.com 第一節(jié):初識Angular-CLI第二節(jié):登錄組件的構(gòu)建第三節(jié):建立...
    接灰的電子產(chǎn)品閱讀 18,391評論 60 44