設定路由參數
說明
- 導覽路由時,可以帶參數,讓目標前往的路由取得參數使用
- 帶入參數的方式有三種:
- 在路由設定
const routes: Routes = []
中設定 - 使用
matrix uel notation
表示法 - 使用
Query String
表示法
- 在路由設定
在路由設定中設定參數
- 只要有在path中設定參數,網址列上就必須出現該參數
- 如果網址路徑沒有傳入路由參數,路由會比對失敗
- 使用
/:參數名稱
程式碼寫法
const routes: Routes = [
{path: 'pathName/:params', component: certainComponent }
]
程式碼範例:
1.在app-routing.module.ts
中變更路由設定如下
const routes: Routes = [
{
path: '',
redirectTo: "/pageA",
pathMatch: "full"
},
{
path: 'pageA',
component: PageAComponent
},
{
path: 'pageB/:id',
component: PageBComponent
},
{
path: 'child',
loadChildren: './child/child.module#ChildModule'
},
{
path: 'error',
component: ErrorComponent
},
errorRoute
];
2.點擊連結來去page-b
,此時會因為連結沒有帶入參數,路由比對失敗
3.變更app.component.html
中來去page-b
的超連結如下
<a routerLink="/pageB/3" routerLinkActive="activeStyle" [routerLinkActiveOptions]="{exact: true}">
4.點擊連結來去page-b
測試,並注意網址列路由
matrix uel notation
url格式:類似Query String,但把"?"與"&"都改成";"
http://localhost:4200/path;params1=xx;params2=xx
template寫法
<a [routerLink]="['path', {params1: 'xx'}]">超連結文字</a>
程式碼寫法:傳入一個物件到超連結[routerLink]
或程式this.router.navigate()
方法內陣列參數的最後一個元素
this.router.navigate(['path', {params1: 'xx'}]);
程式碼範例:
1.在app.component.html'''內的
- ```標籤內最下面增加一個button
<li><button (click)="navigateMatrix()">路由參數(matrix)</button></li>
2.在app.component.ts
內加入navigateMatrix()
方法
navigateMatrix(){
this.router.navigate(['child', 'c1', { id: 1, name: "c1" }]);
}
3.點擊連結來去page-c1
與按鈕路由參數(Matrix)
測試路由導覽,並注意網址列路由
Query String
url格式
http://localhost:4200/path?params1=xx¶ms2=xx
template寫法
<a [routerLink]="['path', {params1: 'xx'}]">超連結文字</a>
程式碼寫法:傳入一個物件到超連結[routerLink]
或程式this.router.navigate()
方法內第二個參數的queryParams屬性
this.router.navigate(['path', { params1: 'xx' }]);
程式碼範例:
1.在app.component.html'''內的
- ```標籤內最下面增加一個button
<li><button (click)="navigateQueryString()">路由參數(QueryString)</button></li>
2.在app.component.ts
內加入navigateQueryString()
方法
navigateQueryString(){
this.router.navigate(['child', 'c2'], { queryParams: { id: 1, name: "c2" } });
}
3.點擊連結來去page-c2
與按鈕路由參數(QueryString)
測試路由導覽,並注意網址列路由