Angular: данные от ребенка не определены - PullRequest
0 голосов
/ 19 марта 2019

простая проблема: я хочу передать данные от дочернего элемента к его родительскому элементу при нажатии на кнопку, но данные всегда являются неопределенными в родительском элементе. Я смотрел на: Документация Angular и на множество постов, уже решающих эту проблему, но я все еще застрял с этим, так что ...

Дочерний компонент (<left-panel>) имеет кнопку с обработчиком событий (click)="handleAddTea()". При нажатии на кнопку emit() событие через EventEmitter, которое имеет декоратор @Output, как требуется.

И я связываю это EventEmitter с обработчиком в родительском шаблоне со знаком $ перед данными, как задокументировано: (addTeaEvent)="handleAddTeaEvent($data)" Но когда срабатывает функция handleAddTeaEvent, данные равны undefined

Вот соответствующий код в дочернем компоненте:

  @Output()
  addTeaEvent: EventEmitter<any> = new EventEmitter<any>();

  handleAddTea() {
    console.log('Add Tea Clicked sending to parent..');
    this.addTeaEvent.emit(this.mainTitle)
  }
<button class="btn flex__item--middle btn--large btn--call-to-action" (click)="handleAddTea()">
    {{addBtnText}}
  </button>

А вот соответствующий код в родительском компоненте:

handleAddTeaEvent(stuff: any) {
    console.log('from parent', stuff);
    
  }
<left-panel mainTitle="Add a tea" addBtnText="Add tea" (addTeaEvent)="handleAddTeaEvent($data)"></left-panel>

Почему он не определен?

1 Ответ

3 голосов
/ 19 марта 2019

Вам необходимо использовать $event вместо $data в прослушивателе событий:

<left-panel mainTitle="Add a tea" addBtnText="Add tea" (addTeaEvent)="handleAddTeaEvent($event)"></left-panel>

Для дальнейшего чтения: https://angular.io/guide/user-input

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...