2017-02-07 6 views
0

Я пытаюсь использовать component в угловых 1.6 с:метод вызова/запуск действия на компоненте ребенка в Угловом 1.x

  • односторонний привязки данных для входов (например, < bindings вместо =)
  • события для выходов (& bindings).

Каков наилучший подход для вызова функций в дочернем компоненте из родительского компонента?

В моем случае мой дочерний компонент будет представлять собой модальное диалоговое окно с функцией showModal(). Я хочу передать идентификатор элемента, который я хочу редактировать (достаточно просто с привязкой ввода <), а затем вызывать метод дочернего компонента showModal() из родительского компонента (списка элементов).

+0

Я не понимаю проблемы. Детский компонент знает, когда ID передан, чтобы он мог вызвать 'showModal()' сам. – zeroflagL

+0

Как вы говорите, я могу сказать, когда в родительском элементе выбран элемент, используя крючок $ onChanges дочернего компонента (пройденный идентификатор изменится). Но это не тот момент, когда я хочу вызвать 'showModal()'. Пользователь должен выбрать элемент в родительском списке, а затем нажать кнопку, которая сообщает дочернему компоненту, чтобы показать модальный, если это имеет смысл. –

ответ

0

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

, если вы знаете, трансляцию событий с данными, как этот

$rootScope.$broadcast('resetDataRange',{id:1}); 

этого вы должны написать в свой родительский компонент, когда вы хотите вызвать метод ребенка

В ребенка

 $rootScope.$on("resetIntraDataRange",function(data){ 

showModal(data.id); 

       }); 

это вызовет при запуске события трансляции, и вы получите то, что хотите в дочернем.

100% рабочий раствор

1

Просто добавьте дополнительное связывание для управления видимостью диалога :.

'visible': '<' 

$onChanges(changes) { 
    if(changes.visible && changes.visible.currentValue) { 
    this.showDialog(); 
    } 
}