为什么这个EventEmitter返回一个Event而不是一个字符串?

时间:2017-04-22 18:11:29

标签: event-handling angular2-forms angular2-services angular2-directives

我试图在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);
  }

我做错了什么?

1 个答案:

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