事件发射器不会在HTTPResponse上发射事件

时间:2019-07-10 14:33:36

标签: angular angular-components eventemitter emit

我正在尝试使用事件绑定将子组件的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函数基本上记录接收到的真/假。只有标记为//作品的注释才会打印在控制台上。

我期望事件发射器始终发出该值。关于如何调试它的任何想法都将受到赞赏。

0 个答案:

没有答案