Выдать событие из директивы в родительский элемент

У меня есть элемент в шаблоне HTML. Я добавляю к нему директиву:

<div myCustomDirective>HELLO</div>

Я хочу, чтобы всякий раз, когда я наводил курсор наdiv текст внутриdiv должны быть изменены, но это должно быть сделано изDirective (mouseover) событие.

Я не знаю, как испустить событие изDirective и захватить внутри родительского элемента.

Любая помощь приветствуется. Это проект angular2.

 raju22 июн. 2016 г., 16:47
Да, этот <div> является родительским контейнером. Также я просто хочу узнать, существует ли какой-либо способ распространения данных из Директивы -> Родитель.
 Günter Zöchbauer22 июн. 2016 г., 14:25
Почему бы вам не послушать в самом компоненте указатель мыши? Что такое родительский элемент? Это элемент, который содержит HTML выше в шаблоне?

Ответы на вопрос(2)

Решение Вопроса

ЕслиmyCustomDirective имеет выход@Output() someEvent:EventEmitter = new EventEmitter(); тогда вы можете использовать

<div myCustomDirective (someEvent)="callSomethingOnParent($event)">HELLO</div>
 Günter Zöchbauer11 июл. 2018 г., 11:48
@AmilaThennakoon, что ты имеешь в виду под этим? Что вы имеете в виду под "зарегистрироваться"?
 Amila Thennakoon11 июл. 2018 г., 11:39
не забудьте зарегистрировать callSomethingOnParent в ngOnInit ()
 Ajmal sha13 июл. 2017 г., 10:47
Как я могу использовать таким образом в теге <router-outlet>?
 Günter Zöchbauer13 июл. 2017 г., 10:54
Ты не можешь Для взаимодействия с компонентами, добавляемыми маршрутизатором, используйте общую службу (в идеале, с наблюдаемыми для отправки новых событий).

Я хотел бы добавить к ответу @ GünterZöchbauer, что если вы пытаетесь создать событие изструктурный директива и использование звездочки (*Синтаксис при применении директивы, он не будет работать. Angular 5.2.6 по-прежнему не поддерживает@Output обязательный для структурных директив, если используется с* синтаксис (см.Выпуск GitHub).

Вы должны преобразовать его в обезвоженную форму (посмотреть здесь), т.е.

<ng-template [customDirective]="foo" (customDirectiveEvent)="handler($event)">
  <div class="name">{{hero.name}}</div>
</ng-template>

вместо:

<div *customDirective="foo" (customDirectiveEvent)="handler($event)" class="name">{{hero.name}}</div>
 Drenai21 февр. 2019 г., 18:15
Это только спасло меня - хороший ответ! Также не было никаких предупреждений / ошибок
 MartinJH23 мая 2019 г., 16:46
Также спасибо от меня - скорее всего, спас меня от очень непродуктивного дня: D
 manojadams27 июл. 2019 г., 20:58
Просто упомянуть, что излучатели событий в рамках структурных директив все еще не работают с угловым 7.

Ваш ответ на вопрос