2016-10-26 2 views
8

Когда мы передаем дочернему компоненту model и он его модифицирует, значения просто отражаются в локальной переменной дочерних компонентов и недоступны для родителя. Можем ли мы передавать значения по ссылке от родителя к дочернему. Таким образом, изменения видны и там.Angular2: Передача по ссылке для взаимодействия между компонентами

Я реализовал то же самое, используя observable на сервисном уровне. Но мы не можем пройти по ссылке через @Input?

+0

Можете ли вы опубликовать полный пример того, о чем вы говорите (возможно, с более подробным объяснением ожидаемого поведения)? –

+0

Я не могу опубликовать полный пример здесь. Но точный сценарий, который у меня есть, заключается в том, что я хочу передать formGroup моему дочернему компоненту и прочитать значения в родительском компоненте, чего не происходит, поскольку изменяется только дочерняя группа. –

+0

дубликат http://stackoverflow.com/questions/36246994/how-to-use-two-way-data-binding-between-components-in-angular-2? – Supamiu

ответ

21

Примитивные значения (string, num, boolean, ссылки на объекты) передаются по значению (копируемого), объекты и массивы передаются по ссылке (оба компонента получить ссылку на тот же экземпляр объекта).

Просто оберните свои примитивные значения в объекты и изменения будут отражаться с обеих сторон.

Обнаружение изменений в угловом режиме не обнаружит изменений в значениях в массивах или свойствах объекта (за исключением случаев, когда их связывают выражения).

+4

Примечание. Это не специфичный для Angular2 или TypeScript. Так работает JavaScript. –

+2

Одна из трудностей обучения Angular заключается в том, что некоторая критическая информация, такая как это, не упоминается в документации. Необходимо собрать усилия для сбора такой информации и включить ее, поэтому для использования Angular не нужно становиться экспертом по JavaScript. –

+1

@MickeySegal Это основы JavaScript и не связаны с Angular. Для каждой веб-структуры не имеет смысла документировать JS. –