2017-10-10 10 views
0

私は親に子供からの出力を渡すためにしようとしていることでトリガーされないだろう、それだけでは動作しませんている理由がわからない 、角度4親コンポーネントイベントリスナーは、子放出されたイベント

子供:

デコレータ:

@Component({ 
    selector: 'child', 
    templateUrl: './child.component.html', 
    styleUrls: ['./child.component.css'] 
}) 

@Output() notify: EventEmitter<string> = new EventEmitter<string>(); 
onClick(){ 
    this.notify.emit('msg from child component'); 
} 

輸入:

import { Component, OnInit, EventEmitter, Output } from '@angular/core'; 

テンプレート:

<button (click)="onClick()"> search </button> 

親:

onNotifyClicked(message: string): void { 
    this.showMsg = message; 
} 

テンプレート:

<child (notify)="onNotifyClicked($event)"> </child> 

Iが(放出されている通知する状態に到達this.notify.emit( 'MSG検索コンポーネントから') ; 、エラーがEMITのためにスローされません) が、私は親ハンドラに入ることはなかった 実行がonNotifyClicked()、

+0

あなたはそれをどのように知っていますか?親ハンドラにconsole.logを入れましたか? – echonax

+0

@echonax私は最初にブレークポイントを使用していましたが、あなたのコメントの後で、console.logを追加しただけで何もしませんでした – lironn

+0

あなたのインポートを含めることができますか? '@ Output'はどこでインポートしますか? – echonax

答えて

0

変更などの変数、

@Output() 
notify = new EventEmitter<string>(); 
+0

あなたの助けに感謝し、ちょうどそれをテストしてまだonNotifyClicked()には、私は角度4.2.4とtypescript 2.3.3、任意のアイデアを使用して得ないでしょうか? – lironn

+0

@lironnプランナーを作成 – Sajeetharan

+0

誰かが私のためにそれをしました - > https://stackblitz.com/edit/angular-a17ptm?file=app%2Fapp.component.ts – lironn

0

あなたの親がいないリスニングされていない限り、あなたのコードは動作するはずです子コンポーネントでは(あなたの投稿のように)直接ではなく、その親の1つにあります。 、私は私のdevのENVを再起動する必要がありました

<div (notify)="onNotifyClicked($event)"> 
    <child></child> 
</div> 
0

私の手順は正しかった、誰が取得する:あなたの親コンポーネントは、以下のサンプルコードのようなものを持っている場合、それはメッセージを取得することはできませんので、イベントバブリングをサポートしていませんアンギュラここでは、このユースケースを読んで時間を無駄にしないでください。

関連する問題