Angular EventEmitter не запускается в родительском компоненте из дочернего компонента

#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 в дочернем компоненте возникает эта проблема, и я удалил ее и использовал другой метод для просмотра дочерней функции (это полностью зависит от того, чего вы пытаетесь достичь).