0

私はAngular2でコンポーネントを通信しようとしていて、出力デコレータを使用することが私の場合には最良の方法であることを知ったので、ドキュメントのガイドに従っています。私が子ノードから受け取っているものをコンソールにログオンしようとすると、想定されていた文字列の代わりにEventオブジェクトになります。このEventEmitterは文字列ではなくイベントを返すのはなぜですか?

これは、イベント(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); 
    } 

私は何をしていますか? g間違っている?

答えて

0

あなたは間違ってイベントを呼び出しているように見える:

それがチェックボックスであるため、子供のイベントではなく、「クリック」の「変更」である必要があります。

<input type="checkbox" name="isActive" *ngIf="node._name?.length > 0" (change)="choose(node)">  

親でイベント'変更'の代わりに 'オンに選択'する必要があります。

<tree-view (onChosen)=onChosen($event) [treeData]=myTree></tree-view> 
+0

私はそう思っていましたが、試してみましたが、発生したときにイベントが発生することはなく、コンソールには何も記録されません。 –

+0

投稿を編集しました。 – Lionel

+0

まだ動作しません。チェックボックスをクリックしても何も起こりません。 –

関連する問題