1
我正在嘗試在Angular 2組件中進行深度鏈接,以便在設置URL參數時打開一個選項卡。例如:Angular 2導航到內部錨鏈接
http://my.project/tabs/2
這將隨後觸發我組件加載標籤#2在頁加載而不是1的默認選項卡#。
我還需要在頁面上單擊標籤#2時將當前URL更改爲http://my.project/tabs/2
。
我正在嘗試在Angular 2組件中進行深度鏈接,以便在設置URL參數時打開一個選項卡。例如:Angular 2導航到內部錨鏈接
http://my.project/tabs/2
這將隨後觸發我組件加載標籤#2在頁加載而不是1的默認選項卡#。
我還需要在頁面上單擊標籤#2時將當前URL更改爲http://my.project/tabs/2
。
如果你想使用網址,你需要router。一旦你設置你的路由,你可以在你的組件中使用路由器。比方說,你有這些路線:
@RouteConfig([
{ path: '/tabs', name: 'Tabs', component: TabsComponent },
{ path: '/tabs/:id', name: 'TabDetails', component: TabDetailsComponent },
])
然後在你的組件,你可以做這樣的事情:
constructor(private _router: Router) {
// this will handle initial opening, or browser refresh
let initial: any = this._router.subscribe(route => {
let tabID = route.replace('tabs/', ''); // or something smarter please (;
this.openTabs(tabID);
initial.unsubscribe();
});
}
openTabs(id) {
if (!check_if_its_initial) {
this._router.navigate(['Tabs', 'TabDetails', {id: id}]);
}
}
我張貼在此之後我解決路由問題,但是從你的答案不同我用的構造(params:RouteParams){var test = params.get('id'); } 方法。這似乎比通過字符串操作獲取數據要好。有沒有你沒有使用params.get()的原因? – AJStacy
@AJStacy TBH,當時沒有想過。在我的代碼中有這樣的東西(在那裏沒有params ...),所以我認爲它可以爲你工作。但正如我在評論中所說 - 我很高興你做了'更聰明的東西'(: – Sasxa