英雄編輯器(04)-路由

新需求:

添加一個儀表盤視圖。

添加在英雄列表儀表盤視圖之間導航的能力。

無論在哪個視圖中點擊一個英雄,都會導航到該英雄的詳情頁。

在郵件中點擊一個深鏈接,會直接打開一個特定英雄的詳情視圖。

添加 AppRoutingModule

在 Angular 中,最好在一個獨立的頂層模塊中加載和配置路由器,它專注於路由功能,然後由根模塊 AppModule 導入它。

按照慣例,這個模塊類的名字叫做 AppRoutingModule,並且位於 src/app 下的 app-routing.module.ts 文件中。

使用 CLI 生成它。

ng generate module app-routing --flat --module=app

--flat 把這個文件放進了 src/app 中,而不是單獨的目錄中。

--module=app 告訴 CLI 把它註冊到 AppModule 的 imports 數組中。

import { NgModule } from '@angular/core';

import { CommonModule } from '@angular/common';

@NgModule({

  imports: [

    CommonModule

  ],

  declarations: []

})

export class AppRoutingModule { }

替換

import { NgModule } from '@angular/core';

import { RouterModule, Routes } from '@angular/router';

import { HeroesComponent } from './heroes/heroes.component';

const routes: Routes = [

  { path: 'heroes', component: HeroesComponent }

];

@NgModule({

  imports: [RouterModule.forRoot(routes)],

  exports: [RouterModule]

})

export class AppRoutingModule { }

首先,AppRoutingModule 會導入 RouterModule 和 Routes,以便該應用具有路由功能。配置好路由後,接着導入 HeroesComponent,它將告訴路由器要去什麼地方。

注意,對 CommonModule 的引用和 declarations 數組不是必要的,因此它們不再是 AppRoutingModule 的一部分。以下各節將詳細介紹 AppRoutingModule 的其餘部分。

路由

該文件的下一部分是你的路由配置。 Routes 告訴路由器,當用戶單擊鏈接或將 URL 粘貼進瀏覽器地址欄時要顯示哪個視圖。

由於 AppRoutingModule 已經導入了 HeroesComponent,因此你可以直接在 routes 數組中使用它:

典型的 Angular Route 具有兩個屬性:

path: 用來匹配瀏覽器地址欄中 URL 的字符串。

component: 導航到該路由時,路由器應該創建的組件。

這會告訴路由器把該 URL 與 path:'heroes' 匹配。 如果網址類似於 localhost:4200/heroes 就顯示 HeroesComponent。

RouterModule.forRoot()

@NgModule 元數據會初始化路由器,並開始監聽瀏覽器地址的變化。

下面的代碼行將 RouterModule 添加到 AppRoutingModule 的 imports 數組中,同時通過調用 RouterModule.forRoot() 來用這些 routes 配置它:

這個方法之所以叫 forRoot(),是因爲你要在應用的頂層配置這個路由器。 forRoot() 方法會提供路由所需的服務提供者和指令,還會基於瀏覽器的當前 URL 執行首次導航。

imports: [ RouterModule.forRoot(routes) ],

接下來,AppRoutingModule 導出 RouterModule,以便它在整個應用程序中生效。

exports: [ RouterModule ]

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章