前言
上篇有簡單帶過 router 使用方式,若需要底下有階層需要怎麼做。這次會使用子層方式展示。
router 子層作法
一、 設定 app-routing.module.ts
設定路由,這邊會有兩層,一層是 home,一層是 other,other 下面有 book。
1 | const routes: Routes = [ |
二、 設定 app.component.html
1 | <div> |
三、 設定 home.component.html
這邊目的需要有一個連結可以連到 other,所以會有一個 routerLink。
1 | <div> |
四、設定 other.component.html
這邊提示一下,因為 other 下面有子層,所以需要有一個 router-outlet,這樣才能顯示子層的內容。若沒有加入會發生 book 連結過去,會沒有顯示內容。
1 | <div class="bg"> |
以上完成後效果如下,背景部分可以透過 css 設定。
module 製作 router
module 不但可以放置版面的模組以外,也可以製作一個routing環境。
一、創建一個 module
首先要創建一個 module ,名稱建議要加入routing 才會知道這個 module 作用。
1 | ng g m children-routing |
二、設定 app-module
這動作是告訴讀取app-module 需要讀到我們的 module 才會到這裡面的頁面。
1 | const routes: Routes = [ |
到目前為止,app-routing 就完成設定了。
(備註 : angular 創建文件時候會寫入 app.module.ts ,若有發生錯誤記得在那看看有沒有imports)
三、設定 children 預設頁面
接下來,創建一個 children 預設畫面。並開始設定我們的 children-routing。
1 | ng g c page1 |
設定 children-routing 環境。
這邊要留意,如果沒有 exports RouterModule
會造成無法轉入頁面。
1 | const routes: Routes = [ |
設定完成後,就可以將 http://localhost:4200/children
打開。
總結
為了製作子層 router時候,比較多人會創建兩個 module,一個是放 routing 、一個是放模組或是擴充的 module 這樣來使用。 事實上可以直接使用一個routing 唯一缺點會比較亂一些。若要加入第二個module 下面的補充可以參考。
補充
若有第二個module 需要改以下內容就可以正常使用了。
- children.module
1
2
3
4
5
6
7
8({
declarations: [
],
imports: [
ChildrenRoutingModule,
]
}) - app-routing.module
1
2
3
4
5
6
7
8
9
10
11
12const routes: Routes = [
{ path: '', component: HomeComponent },
{
path: 'other', component: OtherComponent, children:
[
{ path: 'book', component: BookComponent, },
]
},
{
path: 'children', loadChildren: () => ChildrenModule
}
];