本教學課程示範如何為你的應用程式加入路由。
IMPORTANT: 我們建議使用你的本機環境來學習路由。
你將學到什麼
在這一課結束時,你的應用程式將支援路由。
路由概念預覽
本教學介紹 Angular 中的路由。路由是從應用程式中的一個元件導覽到另一個元件的能力。在單頁應用程式(SPA)中,頁面只有部分會更新,以呈現使用者所要求的檢視畫面。
Angular Router讓使用者能宣告路由,並指定當應用程式請求某條路由時,畫面上應該顯示哪個元件。
在這一課中,你會在應用程式中啟用路由,以便導覽到詳細資訊頁面。
-
建立預設的詳細資訊元件
在終端機中,輸入下列指令,建立
Details:ng generate component details這個元件將代表詳細資訊頁面,提供特定房屋地點的更多資訊。
-
為應用程式加入路由
在
src/app目錄中,建立一個名為routes.ts的檔案。我們會在這個檔案中定義應用程式的路由。在
main.ts中,進行下列更新,在應用程式中啟用路由:匯入路由檔案與
provideRouter函式:在 src/main.ts 中匯入路由相關內容
import {bootstrapApplication} from '@angular/platform-browser'; import {App} from './app/app'; import {provideRouter} from '@angular/router'; import routeConfig from './app/routes'; bootstrapApplication(App, { providers: [provideRouter(routeConfig)], }).catch((err) => console.error(err));更新對
bootstrapApplication的呼叫,加入路由設定:在 src/main.ts 中加入路由設定
import {bootstrapApplication} from '@angular/platform-browser'; import {App} from './app/app'; import {provideRouter} from '@angular/router'; import routeConfig from './app/routes'; bootstrapApplication(App, { providers: [provideRouter(routeConfig)], }).catch((err) => console.error(err));
在
src/app/app.ts中,更新元件以使用路由:為路由指令
RouterLink與RouterOutlet加入檔案層級的匯入:在 src/app/app.ts 中匯入路由指令
import {Component} from '@angular/core'; import {RouterLink, RouterOutlet} from '@angular/router'; @Component({ selector: 'app-root', imports: [RouterLink, RouterOutlet], template: ` <main> <a [routerLink]="['/']"> <header class="brand-name"> <img class="brand-logo" src="/public/logo.svg" alt="logo" aria-hidden="true" /> </header> </a> <section class="content"> <router-outlet /> </section> </main> `, styleUrl: './app.css', }) export class App { title = 'homes'; }在
@Component中繼資料的 imports 中,將Home換成RouterLink與RouterOutlet:將路由指令加入 src/app/app.ts 的元件 imports
import {Component} from '@angular/core'; import {RouterLink, RouterOutlet} from '@angular/router'; @Component({ selector: 'app-root', imports: [RouterLink, RouterOutlet], template: ` <main> <a [routerLink]="['/']"> <header class="brand-name"> <img class="brand-logo" src="/public/logo.svg" alt="logo" aria-hidden="true" /> </header> </a> <section class="content"> <router-outlet /> </section> </main> `, styleUrl: './app.css', }) export class App { title = 'homes'; }在
template屬性中,用<router-outlet>指令取代<app-home />標籤,並加入一個連回首頁的連結。你的程式碼應該與這段程式碼一致:在 src/app/app.ts 中加入 router-outlet
import {Component} from '@angular/core'; import {RouterLink, RouterOutlet} from '@angular/router'; @Component({ selector: 'app-root', imports: [RouterLink, RouterOutlet], template: ` <main> <a [routerLink]="['/']"> <header class="brand-name"> <img class="brand-logo" src="/public/logo.svg" alt="logo" aria-hidden="true" /> </header> </a> <section class="content"> <router-outlet /> </section> </main> `, styleUrl: './app.css', }) export class App { title = 'homes'; }
-
為新元件加入路由
在上一個步驟中,你移除了範本中對
<app-home>元件的參照。在這個步驟中,你會為該元件加入一條新路由。在
routes.ts中,進行下列更新,建立一條路由。為
Home、Details與路由定義中會用到的Routes型別加入檔案層級的匯入。匯入元件與 Routes
import {Routes} from '@angular/router'; import {Home} from './home/home'; import {Details} from './details/details'; const routeConfig: Routes = [ { path: '', component: Home, title: 'Home page', }, { path: 'details/:id', component: Details, title: 'Home details', }, ]; export default routeConfig;定義一個型別為
Routes、名為routeConfig的變數,並為應用程式定義兩條路由:為應用程式加入路由
import {Routes} from '@angular/router'; import {Home} from './home/home'; import {Details} from './details/details'; const routeConfig: Routes = [ { path: '', component: Home, title: 'Home page', }, { path: 'details/:id', component: Details, title: 'Home details', }, ]; export default routeConfig;routeConfig陣列中的項目代表應用程式中的路由。第一個項目會在 url 符合''時導覽到Home。第二個項目使用了一些特殊格式,之後的課程會再回頭說明。
儲存所有變更,確認應用程式在瀏覽器中可以運作。應用程式應該仍然會顯示房屋地點清單。
SUMMARY: 在這一課中,你在應用程式中啟用了路由,也定義了新路由。現在你的應用程式可以支援在不同檢視畫面之間導覽。在下一課中,你將學會如何導覽到特定房屋地點的「詳細資訊」頁面。
你的應用程式有很大的進展,做得很好。
如需本課所涵蓋主題的更多資訊,請造訪: