gpt4 book ai didi

javascript - 如何从组件循环向主要父级发出事件 angular 5

转载 作者:行者123 更新时间:2023-11-30 11:19:04 26 4
gpt4 key购买 nike

我写了下面的代码,我在其中循环显示子组件

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 中定义

我在这里做错了什么?我在这个问题上浪费了很多时间。

感谢您的帮助...:-)

最佳答案

在子组件中,您需要继续将事件链接到父组件。修改您的模板,以便发射器在子事件发生时重新发射。

<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>

关于javascript - 如何从组件循环向主要父级发出事件 angular 5,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50511360/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com