#angular #angular-event-emitter
#angular #angular-event-emitter
Вопрос:
Я знаю, что на этот вопрос дан ответ, и ссылок тоже так много, но моя проблема странная, не могли бы вы направить меня по правильному пути. Заранее благодарю вас за помощь.
Проблема: источник события не попадает в функцию родительского компонента, когда нажатие кнопки происходит в дочернем компоненте, где происходит излучение.
дочерний html:
<button (click)="onAccept()" class="k-button approve-data" kendoButton>{{confirmBtn}}</button>
дочерние ts:
@Output() choice = new EventEmitter<boolean>();
public onAccept() {
this.choice.emit(true);
}
родительский html:
<app-confirm-modal (choice)="onPopupClose($event)" />
родительский ts:
onPopupClose(isOk: boolean): void { }
Комментарии:
1. родительская функция в ts: onPopupClose(isOk: boolean): void { }
2.
onAccept()
вызывается при любом событии (например, при нажатии кнопки) в дочернем компоненте?3. @Haroon: эй, да, есть кнопка, и при ее нажатии она вызывается. Кстати, это кнопка Kendo.
4. @Haroon: <кнопка (щелчок)=»onAccept()» class=»k-button approve-data» kendoButton>{{confirmBtn}}</button>
5. вы пробовали у дочернего компонента: —- @Output() выбор = новый EventEmitter<логическое значение>();
Ответ №1:
Я столкнулся с той же ошибкой, и я решил ее, и вот как я это сделал
Когда я отлаживал метод emit в chrome dev tool при передаче значения, я обнаружил, что eventEmitter.observers
объект по какой-то причине пуст.
После еще нескольких методов отладки и проверки ошибок я обнаружил, что @ViewChild
в дочернем компоненте возникает эта проблема, и я удалил ее и использовал другой метод для просмотра дочерней функции (это полностью зависит от того, чего вы пытаетесь достичь).