我写了下面的代码,我在这里循环组件来显示孩子
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
我收到错误,因为 child.component.ts
中没有定义 nodeClicked我在这里做错了什么?我在这个问题上浪费了这么多时间。
感谢您的帮助......: - )
答案 0 :(得分:3)
在子组件中,您需要继续将事件链接到父组件。修改模板,以便在子事件发生时重新发出发射器。
<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>