目前Angular已經(jīng)升級到了穩(wěn)定版本Angular5,這次升級更小更快以及更穩(wěn)定!路由可以說是Angular甚至是單頁應(yīng)用的核心部分了吧!在angularjs中的路由最大的缺點(diǎn)就是無法嵌套路由,在Angular中解決了這個問題!在Angular中路由不僅僅是頁面跳轉(zhuǎn),其中還有一項叫英雄列表跳轉(zhuǎn)英雄詳情!在諸多的列表,不可能給每個英雄做一個詳情頁,于是乎路由參數(shù)起到作用了!通過路由傳入?yún)?shù)識別那個英雄的詳情!
現(xiàn)在對于路由傳值進(jìn)行詳解,首先一種方式是官網(wǎng)的導(dǎo)航到詳情的單值id傳入,另一種是多數(shù)據(jù)傳入!
1.單值傳入
['/hero', hero.id]
<ul class="items"> <li *ngFor="let hero of heroes$ | async" [class.selected]="hero.id === selectedId"> <a [routerLink]="['/hero', hero.id]"> <span class="badge">{{ hero.id }}</span>{{ hero.name }} </a> </li> </ul>以上是官網(wǎng)示例
下面我們用我自己的示例介紹一下:
首先是列表頁,以及跳轉(zhuǎn)方式
代碼如下:<p *ngFor="let item of items" [routerLink]="['/listDetail',item.id]">{{item.name}}</p>
然后是配置路由:(單值傳入的方式需要在詳情組件路由配置)
{ path:'listDetail/:id', component:ListDetailComponent },傳入后就是取到參數(shù),在詳情組件的ngOnInit生命周期獲取參數(shù)
ngOnInit() { this.route.params .subscribe((params: Params) => { this.id = params['id']; console.log(this.id); console.log('傳值'); console.log(params) }) }2.我們在平時的復(fù)雜的業(yè)務(wù)場景我們需要傳多個數(shù)據(jù),這時候該怎么辦呢?這時候我們就用到了queryParams
代碼如下:<p *ngFor="let data of datas" [routerLink]="['/listDetails']" [queryParams]="{id:data.id,state:data.state}">{{data.name}}</p>
這里數(shù)據(jù)我是直接拿上去的,同樣你可以組織好數(shù)據(jù),一個參數(shù)放上去,簡化html結(jié)構(gòu),現(xiàn)在有個問題,這樣多值傳入路由參數(shù)怎么配置呢?/:id/:id???我這個參數(shù)多少也不是固定的咋辦?其實這種方式不需要配置路由!你只需要傳入和取到數(shù)據(jù)就可以了!
ngOnInit() { this.route.queryParams .subscribe((params: Params) => { this.id = params['id']; this.state = params['state']; console.log(params) console.log(this.id); console.log(this.state); }) }以上就是Angular路由傳值兩種方式!希望對大家有幫助!也希望大家多多支持錯新站長站。
新聞熱點(diǎn)
疑難解答
圖片精選