2016-01-21 71 views
1

我正在嘗試在Angular 2組件中進行深度鏈接,以便在設置URL參數時打開一個選項卡。例如:Angular 2導航到內部錨鏈接

http://my.project/tabs/2

這將隨後觸發我組件加載標籤#2在頁加載而不是1的默認選項卡#。

我還需要在頁面上單擊標籤#2時將當前URL更改爲http://my.project/tabs/2

回答

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}]); 
    } 
} 
+0

我張貼在此之後我解決路由問題,但是從你的答案不同我用的構造(params:RouteParams){var test = params.get('id'); } 方法。這似乎比通過字符串操作獲取數據要好。有沒有你沒有使用params.get()的原因? – AJStacy

+1

@AJStacy TBH,當時沒有想過。在我的代碼中有這樣的東西(在那裏沒有params ...),所以我認爲它可以爲你工作。但正如我在評論中所說 - 我很高興你做了'更聰明的東西'(: – Sasxa