Ng2 路由

Angular2中包含了一個(gè)路由框架,我們只需要定義一個(gè)個(gè)的路徑和它對(duì)應(yīng)的組件,然后在頁(yè)面跳轉(zhuǎn)時(shí)也是用Angular2的方式就能很方便的實(shí)現(xiàn)路由控制。

Angular2的路由包含下面4個(gè)部分:

  • 路由定義
  • 路由器
  • 導(dǎo)航
  • 參數(shù)

路由定義

路由定義,通俗來(lái)講就是定義一個(gè)URL路徑,打開(kāi)的是哪個(gè)頁(yè)面,由哪個(gè)組件來(lái)控制數(shù)據(jù)交互和用戶交互,頁(yè)面就是組件定義中定義的這個(gè)組件對(duì)應(yīng)的模板頁(yè)面。

路由器

路由器也就是分發(fā)器。當(dāng)點(diǎn)擊一個(gè)鏈接時(shí),就是由他來(lái)確定要打開(kāi)哪一個(gè)組件?怎么封裝?怎么傳遞參數(shù)。

導(dǎo)航

就是指從一個(gè)頁(yè)面打開(kāi)另一個(gè)頁(yè)面。有兩種方式:

  • 通過(guò)頁(yè)面上的一個(gè)鏈接link
  • 在JS中使用代碼導(dǎo)航

參數(shù)

當(dāng)我們?cè)陧?yè)面之間跳轉(zhuǎn)時(shí),通常都需要傳遞參數(shù)。除了常見(jiàn)的URL參數(shù)傳遞之外,在REST風(fēng)格的路徑設(shè)計(jì)中,經(jīng)常使用某一個(gè)id作為url的一部分。

最簡(jiǎn)單的路由配置

S1:設(shè)置index.html頁(yè)面的基址

打開(kāi)index.html,確保它的<head>區(qū)頂部有一個(gè)<base href="...">元素(或動(dòng)態(tài)生成該元素的腳本)。

S2:告訴路由器當(dāng)用戶點(diǎn)擊鏈接時(shí),應(yīng)該顯示哪個(gè)視圖?

  • app.module.ts中導(dǎo)入RouterModule類,并在import數(shù)組中添加路徑導(dǎo)航如下:

     RouterModule.forRoot([
          {
            path: 'heroes',
            component: HeroesComponent
          }
        ])
  • 路由出口

我們必須告訴路由器它位置,所以我們把<router-outlet>標(biāo)簽添加到模板的底部。 RouterOutlet是由RouterModule提供的指令之一。 當(dāng)我們?cè)趹?yīng)用中導(dǎo)航時(shí),路由器就把激活的組件顯示在<router-outlet>里面。

  • 路由器鏈接

導(dǎo)航的標(biāo)準(zhǔn)化配置

S1:在src下新建導(dǎo)航模塊

app-routing.module.ts

S2:在文件中導(dǎo)入需要加入路由的組件和路由功能依賴的組件

    
    import { NgModule } from '@angular/core';
    import { HeroDetailComponent } from './hero-detail/hero-detail.component';
    import { DashboardComponent } from './dashboard/dashboard.component';
    import { HeroesComponent } from './heroes/heroes.component';
    
    // 添加路由功能支持
    import { RouterModule, Routes } from '@angular/router';
    // 添加path依賴
    const routes: Routes = [
        {
            path: 'heroes',
            component: HeroesComponent
        },
        {
            path: 'dashboard',
            component: DashboardComponent
        },
        {
            path: '',
            redirectTo: '/dashboard',
            pathMatch: 'full'
        },
        {
            path: 'herodetail/:id',  //帶參數(shù)或者令牌的路由path
            component: HeroDetailComponent
        }
    ];
    
    @NgModule({
        imports: [RouterModule.forRoot(routes)],
        exports: [RouterModule]
    })
    export class AppRoutingModule { }

S3: 在app.module.ts中添加支持


    // 1. 導(dǎo)入路由模塊
    import { AppRoutingModule } from './app-routing.module';
    ...
    //在import數(shù)組中添加模塊 
    AppRoutingModule      //導(dǎo)入路由模塊

S4-1:在html中引入方式


    <nav>
    <a routerLink='/dashboard' routerLinkActive="active">儀表盤</a>
    <a routerLink='/heroes' routerLinkActive="active">英雄列表</a>
    </nav>
    <router-outlet></router-outlet>

S4-2:在ts中使用的方法

1. 導(dǎo)入Router路由器組件

import { Router } from '@angular/router';

2. 在constructor中注入路由器實(shí)例
    
    constructor(
        private heroServce: HeroService,
        private router: Router) { }
3. 在函數(shù)中添加使用,執(zhí)行函數(shù)后會(huì)導(dǎo)航到指定的組件頁(yè)面

     gotoDetail(): void {
        this.router.navigate(['/herodetail', this.selectedHero.id]);
      }
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌,老刑警劉巖,帶你破解...
    沈念sama閱讀 229,908評(píng)論 6 541
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡,警方通過(guò)查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 99,324評(píng)論 3 429
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái),“玉大人,你說(shuō)我怎么就攤上這事。” “怎么了?”我有些...
    開(kāi)封第一講書人閱讀 178,018評(píng)論 0 383
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)。 經(jīng)常有香客問(wèn)我,道長(zhǎng),這世上最難降的妖魔是什么? 我笑而不...
    開(kāi)封第一講書人閱讀 63,675評(píng)論 1 317
  • 正文 為了忘掉前任,我火速辦了婚禮,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘。我一直安慰自己,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 72,417評(píng)論 6 412
  • 文/花漫 我一把揭開(kāi)白布。 她就那樣靜靜地躺著,像睡著了一般。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上,一...
    開(kāi)封第一講書人閱讀 55,783評(píng)論 1 329
  • 那天,我揣著相機(jī)與錄音,去河邊找鬼。 笑死,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播,決...
    沈念sama閱讀 43,779評(píng)論 3 446
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來(lái)了?” 一聲冷哼從身側(cè)響起,我...
    開(kāi)封第一講書人閱讀 42,960評(píng)論 0 290
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎,沒(méi)想到半個(gè)月后,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 49,522評(píng)論 1 335
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 41,267評(píng)論 3 358
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 43,471評(píng)論 1 374
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情,我是刑警寧澤,帶...
    沈念sama閱讀 39,009評(píng)論 5 363
  • 正文 年R本政府宣布,位于F島的核電站,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 44,698評(píng)論 3 348
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧,春花似錦、人聲如沸。這莊子的主人今日做“春日...
    開(kāi)封第一講書人閱讀 35,099評(píng)論 0 28
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)。三九已至,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背。 一陣腳步聲響...
    開(kāi)封第一講書人閱讀 36,386評(píng)論 1 294
  • 我被黑心中介騙來(lái)泰國(guó)打工, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 52,204評(píng)論 3 398
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 48,436評(píng)論 2 378

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

  • 路由要解決的核心問(wèn)題是通過(guò)建立URL和頁(yè)面的對(duì)應(yīng)關(guān)系,使得不同的頁(yè)面可以用不同的URL表示。在angular中,頁(yè)...
    oWSQo閱讀 1,302評(píng)論 0 1
  • 版本:4.0.0+2 有一些英雄指南應(yīng)用的新需求: 添加一個(gè)儀表盤 視圖。 添加在英雄 視圖和 儀表盤 視圖之間導(dǎo)...
    soojade閱讀 1,323評(píng)論 0 0
  • Android 自定義View的各種姿勢(shì)1 Activity的顯示之ViewRootImpl詳解 Activity...
    passiontim閱讀 172,715評(píng)論 25 708
  • Spring Cloud為開(kāi)發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見(jiàn)模式的工具(例如配置管理,服務(wù)發(fā)現(xiàn),斷路器,智...
    卡卡羅2017閱讀 134,823評(píng)論 18 139
  • 1,從本篇文章/音頻/視頻中我學(xué)到的最重要的概念 只有你對(duì)一門語(yǔ)言感興趣,你才有可能學(xué)好他并且愛(ài)上他。 2,我在本...
    17數(shù)428宋琳閱讀 181評(píng)論 2 0