2016-05-09 3 views
1

ES6のコンポーネントからカスタムイベントを送信したいので、テンプレート<component (someEvent)="someFunction()">で聞くことができますが、それを実現することはできません。角2 ES6 - コンポーネントからのイベントの送信

@Component'sプロパティouputsまたはeventsが壊れています。何か不足していますか?

これは私のコンポーネントの宣言です:

import {Component, Output} from 'angular2/core'; 

@Component({ 
    selector: 'section-navigator-component', 
    templateUrl: 'build/components/section_navigator/section_navigator.html', 
    inputs: [ 'resources', 'attr' ], 
    outputs: [ 'someEvent' ] 
}) 


export class SectionNavigatorComponent { 
    constructor() { 

    } 

    resourceClickHandler($event, resource) { 

    } 
} 
+0

あなたが試したことと失敗した場所を示すコードを追加してください。エラーメッセージが表示されましたか? –

+0

質問を更新しました – MyFantasy512

+0

someEventを正しくインポートしていますか? – Michelangelo

答えて

2

これはあなたのケースで動作するはずです:

import {Component, Output, EventEmitter} from 'angular2/core'; 

@Component({ 
    selector: 'section-navigator-component', 
    templateUrl: 'build/components/section_navigator/section_navigator.html', 
    inputs: [ 'resources', 'attr' ], 
    outputs: [ 'someEvent' ] 
}) 


export class SectionNavigatorComponent { 

    constructor() { 
     this.someEvent = new EventEmitter(); 
    } 

    resourceClickHandler($event, resource) { 
     this.someEvent.emit(someValue); 
    } 
} 
+2

ありがとう、私はあなたの答えのおかげで私の問題を解決することができました。あなたは閉じていましたが、欠落していたのは 'angle2/core'からimport {EventEmitter}だけです – MyFantasy512

+1

それは何のエラーも投げていなかったという悲しいことです。とりあえずありがとう – MyFantasy512

0

あなたは以下の代替活字体の構文を使用しない限り、「アウトプット」をインポートする必要はありません。

import {Component, Input, Output, EventEmitter} from 'angular2/core'; 

@Component({ 
    selector: 'section-navigator-component', 
    templateUrl: 'build/components/section_navigator/section_navigator.html' 
}) 


export class SectionNavigatorComponent { 
    @Input() resources: any; 
    @Input() attr: any; 

    @Output() someEvent: EventEmitter<any> = new EventEmitter(); 

    constructor() { 
    } 

    resourceClickHandler($event, resource) { 
     this.someEvent.emit(someValue); 
    } 
} 
関連する問題