我正在尝试使用事件绑定将子组件的fileUploadInProgress标志状态共享给父组件。
标志的初始状态为false。当我发送请求时,使用Eventemitter.emit($ event)
将标志设置为true,并在收到有效响应后将其设置为false。很奇怪,发出了第一个事件,但没有发出第二个事件。
我尝试在第一个事件之前在setTimeout内发出此事件,但它不起作用。我的猜测是,这与事件循环的工作方式有关,但我不确定为什么。
子组件中的上传文件功能
uploadFiles(content) {
this.uploadInProgressEvent.emit(true); // works
setTimeout(() => {
this.uploadInProgressEvent.emit(false); // doesn't work
}, 0)
this.restClient.uploadUserFiles(content)
.subscribe((event) => {
this.uploadInProgressEvent.emit(false); // works
if (event.type === HttpEventType.UploadProgress) {
this.uploadInProgressEvent.emit(false); // doesn't work
} else if (event instanceof HttpResponse) {
this.uploadInProgressEvent.emit(false); // doesn't work
}
});
}
这就是我在父组件中使用事件绑定的方式
<parent-component>
(uploadInProgressEvent)="logg($event)"
</parent-component>
logg函数基本上记录接收到的真/假。只有标记为//作品的注释才会打印在控制台上。
我期望事件发射器始终发出该值。关于如何调试它的任何想法都将受到赞赏。