ActivatedRoute,當前激活的路由對象,主要用於保存路由,獲取路由傳遞的參數。
一:傳遞參數的三種方式,以及ActivatedRoute獲取他們的方式:
1.在查詢參數中傳遞數據:
/product?id=1&name=2 /** 獲取參數 */ =>ActivatedRoute.queryParams[id]
2.在路由路徑中傳遞數據:
//路由配置 {path:'/product/:id'} //路由顯示方式Restful =>/product/1 /** 獲取參數 */ =>ActivatedRoute.params[id]
3.在路由配置中傳遞數據:
//路由配置 {path:'/product',component:ProductComponent,data:[{isProd:true}]} /** 獲取參數 */ =>ActivatedRoute.data[0][isProd]
二:ActivatedRoute接收參數類型
1.參數快照(snapshot):
import { Component, OnInit } from '@angular/core'; import{ActivatedRoute,Params} from '@angular/router'; export class ProductComponent implements OnInit { constructor(private activateInfo:ActivatedRoute) { } ngOnInit() { let id:string= this.activateInfo.snapshot.params["id"]; console.log(id); } }
2.參數訂閱(subscribe):
import { Component, OnInit } from '@angular/core'; import{ActivatedRoute,Params} from '@angular/router'; export class ProductComponent implements OnInit { constructor(private activateInfo:ActivatedRoute) { } productId:string; ngOnInit() { this.activateInfo.params.subscribe( (params:Params)=>{ this.productId=params["id"]; console.log(this.productId); } ) } }
這兩種方式主要區別是由於nginit在頁面第一次加載時會進行初始化,但是第二次不會走nginit的方法,如果同一個頁面顯示兩次,傳遞不同的參數,快照版式無法實時獲取新的參數。