2017-12-06 15 views
0

イベントエミッタが正常に機能しています。私はその後、私の親で角度4イベントエミッターが発光しない

EnterEditMode(){ 
    this.enterEdit.emit(null); 
    } 

:発射

(click)="EnterEditMode() 

:私の子供では、私は、関数を呼び出す。これは完璧に動作

enterEdit(){ 
    console.log("got some text"); 
    } 

。しかし今は、すぐ隣に2番目の出力を追加したいと思います。機能をトリガー

SaveChanges(); 

::だから子供で、私が呼ん

SaveChanges() { 
    this.saveChanges.emit(null); 
    console.log("save"); 
    } 

私はこれを呼び出す

は、コンソールログがトリガーされたのが、EMITがトリガされません。私の親には決して呼び出されない機能があります。

saveChanges() { 
    console.log("saving changes"); 
    this.editing ? this.editing = false : this.editing = true; 
    } 

「のSaveChangesを()」と呼ばれていることだけでコンソールログ、私は本当に私が間違ってやっていると、トラブルシュートしようとしたものを見ることはできませんが、私はエラーを取得していませんよ。エミッタについて何か不足していますか?私の子コンポーネントで

私のイベントエミッタを表示する

編集I:

@Output() enterEdit = new EventEmitter<any>(); 
@Output() saveChanges = new EventEmitter<any>(); 

ここでも、enterEditは動作しますが、でsaveChangesが...

+0

私たちに、イベントエミッタをどこで宣言したか、どのように表示してくださいかを教えてください。 –

+0

イベントにバインドするエミッターとhtmlの宣言を表示してください。 –

+0

オリジナルの質問を調整しました。ありがとう。 – DKinnison

答えて

0

だから、これが原因だったしません。出力エミッタがどのように角度で動作するかについての基本的な誤解につながります。

間違った仮定 エミッタをトリガするだけでコントローラが反応することがあります。

ソリューション 私のhtmlファイルでは、リスナーを要素に追加してから、htmlからコントローラにイベントを渡す必要があります。これは、コントローラがこれまでに何をするべきかを実行するようにトリガします。

私の.htmlファイルで、(saveChanges)= 'saveChanges($ event)'をカスタムコンポーネントに追加する必要があります。これは機能します。