EventEmitter<any>
の@Output
のコンポーネントがあります。ボタンをクリックした後に関数内で.emit()
を呼び出すと出力が機能します。その場合、親コンポーネントのイベントを問題なく捕捉できます。しかし、それは本当にテストの手段と同じです。私が実際にやりたいこと、つまりデータベース呼び出しを行い、成功した場合にイベントを発行しようとすると、イベントは子コンポーネントから放出されたり、親コンポーネントで捕捉されることはありません。ここで私が何を意味するかを示すために、コードを少しです:角2 EventEmitterの問題
testOutput() {
this.outputEvent.emit({event: 'buttonClick', message: 'Here is some output'});
}
makeAnUpdate(form) {
this._service.makeDbCall(data).subscribe(result => {
this.variable = result;
this.outputEvent.emit({ message: 'Here is a message to pass', success: true });
});
}
は私もちょうど下記の機能の購読一部内部からイベントを発する機能を呼び出すために試みたが、それはまだ動作しませんでした:
makeAnUpdate(form) {
this._service.makeDbCall(data).subscribe(result => {
this.variable = result;
this.testOutput();
});
}
他に誰かがこの問題を抱えていますか?ここでも、上記のtestOutput
関数は、呼び出すと機能しますが、makeAnUpdate
関数の内部からは機能しません。
「this._service.makeDbCall(data)」が何も見ずに分かりません。 'subscribe(...)'に渡されたコールバックが呼び出されないと仮定します。 –
それが呼び出されます。呼び出しはデータベースに行われ、その関数に戻ります。私はそこにあるイベントエミッタの前に 'console.log'を置くと' console.log'が動作して表示されるので、私は確信しています。 – pjlamb12
私は実行がどうにかしてAngularsゾーンを離れると仮定します。私は答えを追加します。 –