詳解Angular16如何獲取路由參數(shù)
引言
Anguar 16 引入一個有趣的功能,可以將路由器數(shù)據(jù)直接通過 @Input 來綁定,例如:QueryString,路由參數(shù),data 靜態(tài)數(shù)據(jù)。
舊寫法
在 Angular 16 之前,需要通過 ActivatedRoute 來獲取這些數(shù)據(jù)。假設(shè)有這么一個路由配置:
{
path: ':type',
component: TestComponent,
data: { role: 'admin' }
}并通過以下訪問路由時:
/weixin?uid=1&allow=false
我們可以透過注入 ActivatedRoute 并分別從 data、params、queryParams 獲取到所需要的數(shù)據(jù)。
倘若,你想監(jiān)聽 params 數(shù)據(jù)的變化,還需要單獨為訂閱處理;
除此之外,除 data 以外,其他數(shù)據(jù)類型都是自動轉(zhuǎn)成 string,反正到這里我已經(jīng)很煩人了。
新方式
從 Angular 16 開始這些參數(shù)都可以自動綁定到 @Input 輸入?yún)?shù)當中??梢酝ㄟ^ bindToComponentInputs 激活這個有趣的新功能,就像這樣:
RouterModule.forRoot(routes, {
bindToComponentInputs: true
});
# Sandalone 版本
provideRouter([], withComponentInputBinding())寫法也非常簡單:
@Input() type = '';
@Input() role = '';
@Input({ transform: numberAttribute }) uid = 0;
@Input({ transform: booleanAttribute }) allow = false; 注:transform 參數(shù)是 Angular 16.1 以上新的改進,可以極大的簡化編寫 get、set。
當然,當路由發(fā)生變更時 @Input 也會自動更新,你可以通過 ngOnChanges 來知曉,也可以利用 get、set 寫法。
以上就是詳解Angular16如何獲取路由參數(shù)的詳細內(nèi)容,更多關(guān)于Angular16獲取路由參數(shù)的資料請關(guān)注腳本之家其它相關(guān)文章!
相關(guān)文章
詳解AngularJs中$sce與$sceDelegate上下文轉(zhuǎn)義服務(wù)
這篇文章給大家詳細介紹了AngularJs提供的嚴格上下文轉(zhuǎn)義服務(wù)$sce與$sceDelegate,文中介紹的很詳細,有需要的朋友們可以參考借鑒。2016-09-09
Ubuntu系統(tǒng)下Angularjs開發(fā)環(huán)境安裝
本文主要介紹 Ubuntu系統(tǒng)下Angularjs開發(fā)環(huán)境安裝,這里詳細介紹了安裝步驟和注意事項,有在Ubuntu 環(huán)境下開發(fā)的朋友可以參考下2016-09-09
angularjs指令中的compile與link函數(shù)詳解
這篇文章主要介紹了angularjs指令中的compile與link函數(shù)詳解,本文同時訴大家complie,pre-link,post-link的用法與區(qū)別等內(nèi)容,需要的朋友可以參考下2014-12-12

