我试图在Angular2上传递组件,并发现在我的情况下使用输出装饰器是最好的方法,所以我按照文档的指南执行完全相同的步骤。虽然当我尝试登录控制台时,我从子节点接收的是一个Event对象而不是它应该是的字符串。
这是发出事件的子组件(TreeView组件):
@Component ({
selector: 'tree-view',
template: `
<ul>
<li *ngFor="let node of treeData | derp">
<input type="checkbox" name="isActive" *ngIf="node._name?.length > 0" (click)="choose(node)">
[...]
</li>
</ul>
`
})
export class TreeView implements OnInit {
@Output() onChosen = new EventEmitter<string>();
choose(feature: string) {
this.onChosen.emit(feature);
}
}
这是接收它的父组件:
<tree-view (change)=onChosen($event) [treeData]=myTree></tree-view>
这是在包含上述模板的父组件上调用的回调:
onChosen(feature: string) {
console.log(feature);
}
我做错了什么?
答案 0 :(得分:0)
你似乎在调用错误的事件:
关于孩子的事件应该是'改变'&#39;而不是点击&#39;因为它是一个复选框:
<input type="checkbox" name="isActive" *ngIf="node._name?.length > 0" (change)="choose(node)">
父母的事件应该是'onChosen&#39;而不是改变&#39;。
<tree-view (onChosen)=onChosen($event) [treeData]=myTree></tree-view>