0
我無法讓我的事件發射器在承諾時的方法中正常運行。我沒有收到任何錯誤。它只是根本不會調用在角2中承諾調用事件發射器
的子組件,:
@Output() isLoggingIn = new EventEmitter<boolean>();
onLogin() {
this.isLoggingIn.emit(true); //<-- this gets called, so it works.
this.authService.loginUser(this.loginForm.value)
.then(() => {
console.log(this.isLoggingIn.emit); //<-- This logs out the method.
this.isLoggingIn.emit(false); //<-- This doesn't get called!
})
.catch((err) => console.log(err));
}
這是父組件的HTML模板,header.component.html:
<tas-loginform
(isLoggingIn)="setLoginLoading($event)"
*ngIf="!isSigningUp">
</tas-loginform>
這是父組件打字稿代碼,header.component.ts:
setLoginLoading(bool: boolean) {
console.log(bool);
this.loginLoading = bool;
}
這幾乎就好像事件發射器在promi中調用因爲它不會運行setLoginLoading的console.log,所以回調永遠不會被調用。而且它更加困難,因爲根本沒有錯誤信息。
你確定'.then()'處理程序中的'this'是否指向你想要的對象?我記得上次我在JS工作時,這是一個棘手的問題。 – Douglas
我確定。我做了一個plunkr,試圖複製這個問題。但是plunkr實際上工作,而我的代碼沒有。我猜可能還有其他的事情...... http://embed.plnkr.co/l50UlTSAh3p102lG5Db9/ – TheMarlow
也許你加載區和polyfills的順序? –