Как передать событие из цикла компонента в основной родительский угол 5 - PullRequest
0 голосов
/ 24 мая 2018

Я написал следующий код, где я зацикливаю компонент для отображения потомков

parent.component.ts

 tree = [
    {
      id: 1,
      name: 'test 1'
    }, {
      id: 2,
      name: 'test 2',
      children: [
        {
           id: 3,
           name: 'test 3'
        }
      ]
    }
 ]

nodeClicked(event) {
    console.log(event);
}

parent.component.html

<app-child [tree]="tree" (nodeEmitter)="nodeClicked($event)"></app-child>

child.component.ts

@Input() tree;
@Output() nodeEmitter = new EventEmitter();

clickToEmit() {
    this.nodeEmitter.emit(1);
}

child.component.html

<ul>
  <li *ngFor="let node of tree">{{ node.name }}</li>
  <button (click)="clickToEmit()">Click Me!!!</button>
  <app-child [tree]="node.children" (nodeEmitter)="nodeClicked($event)"></app-child>
</ul>

Здесь моя проблема:

  • Я могу получить отправленное событие в parent.component.html

  • Я не могу получить отправленное событие от child.component.html до
    parent.component.html

Яполучение ошибки как nodeClicked не определено в child.component.ts

Что я здесь не так делаю?Я потратил столько времени на эту проблему.

Спасибо за помощь ...: -)

1 Ответ

0 голосов
/ 24 мая 2018

В дочернем компоненте вам необходимо продолжить связывание события до родительского.Измените ваш шаблон так, чтобы эмиттер повторно излучал при возникновении дочернего события.

<ul>
  <li *ngFor="let node of tree">{{ node.name }}</li>
  <button (click)="clickToEmit()">Click Me!!!</button>
  <app-child [tree]="node.children" (nodeEmitter)="nodeEmitter.emit($event)"></app-child>
</ul>
...