2016-12-02 73 views
4

我想从子组件触发一个事件到父组件。Angular2 EventEmitter触发父组件

@Component({ 
template:'<foo></foo>' 
}) 
export class ParentComponent{ 
    onDoSomething($event){ 
    //do work here 
    } 

} 

@Component({ 
selector:'foo' 
template:<button (click)="onClick($event)">MyButton</button> 
}) 
export class ChildComponent{ 
    myEvent eventName = new EventEmitter(); 

    onClick(button){ 
     this.eventName.emit(button); 
    } 

} 

我如何得到这个工作?

回答

5

你在你的子组件定义EventEmitter@Output

@Component({ 
selector:'foo', 
template:`<button (click)="onClick($event)">MyButton</button>` 
}) 
export class ChildComponent{ 
    @Output() myEvent = new EventEmitter(); 

    onClick(button){ 
     this.myEvent.emit(button); 
    } 

} 

那么 “订阅” 此事件在父组件是这样的:

@Component({ 
    selector: 'my-app', 
    template: `Hello World <foo (myEvent)="myEvent($event)"></foo>`, 
    directives: [], 
    providers: [] 
}) 
export class AppComponent { 

    myEvent($event){ 
     console.log(1, $event); 
    } 
} 

完整的示例:http://plnkr.co/edit/MeQbC7Jbc8rprMF66aEF?p=preview

+0

这仍然不会触发事件 – JT1979

+0

@ JT1979你检查了闯入者吗?打开控制台并按下按钮。 – echonax

+0

是的,它在我的一端没有改变 – JT1979