2016-01-21 4 views
1

Я пытаюсь выполнить глубокую привязку в компоненте Angular 2, чтобы открыть вкладку, когда задан параметр URL. Пример:Угловая 2 Перейдите к внутренней привязной ссылке

http://my.project/tabs/2

Это позволило бы вызвать мой компонент для загрузки вкладку № 2 на странице загрузки вместо вкладки по умолчанию # 1.

Мне также нужно изменить текущий URL-адрес на http://my.project/tabs/2, когда на странице нажимается Tab # 2.

ответ

2

Если вы хотите использовать URL-адреса, вам понадобится 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, не думал об этом в то время. В моем коде было что-то подобное (там не было параметров ...), поэтому я подумал, что это может сработать для вас. Но, как я сказал в комментарии, я рад, что вы сделали что-то умнее (: – Sasxa

Смежные вопросы