在Angular 2中调用promise内的事件发射器

时间:2016-08-22 21:38:27

标签: events angular typescript promise eventemitter

我无法让我的事件发射器在promise的then方法中正常运行。我没有收到任何错误。它只是不会打电话

子组件中的

@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>

这是父组件的typescript代码,header.component.ts:

setLoginLoading(bool: boolean) {
  console.log(bool);
  this.loginLoading = bool;
}

这几乎就像在promise的.then回调中的Event Emitter调用从来没有被调用过,因为它没有运行setLoginLoading的console.log。它使得它更难,因为根本没有错误消息。

1 个答案:

答案 0 :(得分:0)

问题与路由如何弄乱我的身份验证状态有关。我真的无法解释它。我在我的项目中取出了路由,不知怎的,一切都很好。