2016-09-01 2 views
1

В моем основном компоненте есть кнопка «Назад», которая не всегда видна (зависит от дочернего компонента). Как заставить его работать? Я пробовал использовать локальную переменную без везения.Локальная переменная через маршрутизатор

В моей app.component.html (родителю) У меня есть следующие

<button *ngIf="child.goBackUrl">Back</button> 
<router-outlet #child></router-outlet> 

В ChildComponent У меня есть

goBackUrl: string = "test"; 

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

ORIGINAL EXCEPTION: TypeError: self._el_102.goBack is not a function

Любые идеи? Я пробовал несколько разных вещей, но не повезло

+0

Что родитель, что ребенок? Пожалуйста, напишите больше кода. Вы не можете использовать привязку к компонентам, добавленным маршрутизатором (не уверен, что это то, что вы хотите). –

+0

Но это именно то, что мне нужно, привязка к компонентам, добавленным маршрутизатором. Или другой способ для AppComponent (основного компонента) доступа к дочерним компонентам (добавлен маршрутизатором). –

+0

Не можете ли вы использовать 'window.history.back()'? –

ответ

1

Функция привязки данных Angular2 работает только для компонентов и директив, добавленных статически к шаблону компонентов (только для родитель-ребенка).

Для всех других ситуациях используют общие службы, как показано в https://angular.io/docs/ts/latest/cookbook/component-communication.html#!#bidirectional-service