更新:我尝试将此添加到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
答案 0 :(得分:0)
因为我直接使用以下方法在子类中调用方法:
@ViewChild('auth') authChild: AuthComponent;
,我(显然)创建了一个与输入/输出HTML模板中链接的子实例断开连接的子类的新实例。
我没有直接调用子类,而是在子类中实现ngOnChange()
来响应子类本身内的更新事件。这解决了我的所有问题。