我在組件中有一個@Output
類型EventEmitter<any>
。如果在點擊按鈕後在功能上調用.emit()
,輸出將起作用。在這種情況下,我能夠在父組件中捕獲事件而不會出現問題。但是,這實際上只是一個測試措施。當我嘗試做我真正想做的事情,即進行數據庫調用,然後在成功時發出事件時,事件永遠不會從子組件發出,也不會從父組件發出。這裏的代碼一點點地說明我的意思:Angular 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
我假設執行不知何故離開安格拉斯區。我會添加一個答案。 –