事件不会从可观察的

时间:2018-02-19 13:39:17

标签: angular

更新:我尝试将此添加到authToken()的开头并且事件发出正常,所以订阅事件内部发生了一些不允许事件发出的事情?

@Output() tokenAcquired: EventEmitter = new EventEmitter();
...
authToken(authCode: string) {
this.tokenAcquired.emit("testing123");
...

我编写了一个组件,在我订阅服务提供的observable时发出一个字符串。使用没有可观察的emit的另一个组件进行测试表明,父组件和HTML正在接收事件。它;然后我试图从我的观察中发出我没有发出任何事件。

似乎我无法在subscribe事件中触发一个发射器。基于订阅可观察数据获得的数据,发射的适当位置在哪里?

  @Output() tokenAcquired: EventEmitter = new EventEmitter();
  ...
  authToken(authCode: string) {
  this.authservice.spotifyGetToken(authCode).subscribe( data => {
   this.token = <AccessToken>data;
   console.log("Token Raw: " + this.token.access_token);
   this.tokenAcquired.emit("testing123");
},
  (err: HttpErrorResponse) => {
    console.log(err.message + ' : ' + err.status);
  });

HTML

  <app-auth #auth
            [code] = "authCode"
            (tokenAcquired)="receiveToken($event);">
  </app-auth>

Parent Componenet

  receiveToken($event) {
   console.log("receiveToken event fired!" + $event) 
   this.token = $event                                         
   localStorage.setItem('token', $event);
   console.log("Saved token object to local storage...");
  }

不确定这是否有帮助,但在调试器中运行。在应该发出的事件之后,这是EventEmitter的状态: Event Emitter after firing

1 个答案:

答案 0 :(得分:0)

因为我直接使用以下方法在子类中调用方法: @ViewChild('auth') authChild: AuthComponent;,我(显然)创建了一个与输入/输出HTML模板中链接的子实例断开连接的子类的新实例。

我没有直接调用子类,而是在子类中实现ngOnChange()来响应子类本身内的更新事件。这解决了我的所有问题。