2016-12-02 96 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