2016-09-05 6 views
0

У меня есть страница с заголовком и телом. Заголовок имеет кнопку HELP, которая должна открыть документацию. Ссылка на документацию параметризуется с помощью help-id, который зависит от того, какая страница отображается в данный момент.угловой 2 - получить информацию от активного компонента

Мне нужно обновить help-id в заголовке в зависимости от того, какой компонент в настоящее время отображается маршрутизатором. Другими словами, каков правильный способ получения этого параметра (который является простой строкой) из текущего активного компонента?

Я видел, что связь выполняется с помощью службы, но, похоже, создание службы для такой простой задачи - это немного перебор.

Я попытался вывести что-то из кода Router и ActivatedRoute, но мне не удалось что-либо сделать. Навигационные события не содержат ссылки на компонент, routerState.root.firstChild имеет значение null, когда приложение загружено.

EDIT:

здесь, в AppComponent мне нужен текущий идентификатор справки

export class AppComponent { 
    private helpId; 
} 

Мои компоненты, которые отображаются в маршрутизаторах выходе обладают этим свойством, например,

export class HeroComponent { 
    const helpId = 'hero'; 
} 

export class HeroDetailsComponent { 
    const helpId = 'hero-details'; 
} 

Есть маршруты, определенные для каждого компонента, например

const heroesRoutes: Routes = [ 
    { path: 'heroes', component: HeroComponent }, 
    { path: 'hero/:id', component: HeroDetailsComponent } 
]; 

мне нужна справки идентификатор отображаемой в данный момент компонента (оказанной маршрутизатором) для того, чтобы сохранить ссылку справки в заголовок обновлен. Код help-id не передается в параметрах маршрута.

+1

Добро пожаловать в StackOverflow. Пожалуйста, добавьте код к своему вопросу, который демонстрирует, что вы пытаетесь выполнить, позволяет воспроизводить и диагностировать проблему. –

+0

Что делать, если отображается более одного компонента? Этот вопрос нуждается в большем контексте. Как и когда компоненты отображаются/скрыты/удалены/...? –

+0

Из того, что я вижу, есть только один компонент для каждого маршрута, который отображается в стандартном 'router-outlet', мне нужно значение от этого –

ответ

0

Это можно сделать с помощью ActivatedRoute.

Вы должны вводить его в компоненте:

contructor(private route: ActivatedRoute) {} 

И тогда вам нужно слушать события изменения маршрута, что-то вроде:

ngOnInit() { 
    this.route.params.subscribe(params => { 
     // route info is stored in `params` 
     console.log(params); 
    }); 
} 
+0

параметр, который мне нужен, не передается по URL-адресу, он жестко закодирован в каждом компоненте, см. В редакторе –

+0

. Затем это должно быть сделано через службу, неважно, что это очень маленькая услуга.Любое общение осуществляется службами в Angular2, только между компонентами братьев и сестер можно сделать через «@Input» - «@Output» – tibbus

+0

Большое вам спасибо, если вы включите его в ответ, я соглашусь с ним –

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