为什么需要订阅我的Observable?

问题描述

我正在使用@ angular / mdc-web作为Material Design的包装器来进行Angular 8项目。今天,我不得不修复围绕错误对话框的错误。该对话框显示错误消息,可以单击“确定”按钮将其关闭。相当直截了当,在我实施该工具后的第二天,质量检查人员报告了一个问题缺陷之前,所有事情都起到了吸引作用。显然,关闭对话框后,某些UI元素(按钮)停止工作。

为了检查该错误,我订阅了应用程序中央 openDialog 函数返回的Observable,突然不再出现该错误。这是 openDialog 函数的相关代码:

const dialogRef: MdcDialogRef<T> = this.dialog.open(
  // irrelevant stuff ommitted
);

return dialogRef.afterClosed().pipe(
  tap(
    () =>
      (this.dialogRefArray = this.dialogRefArray.filter(
        item => item.id !== data.id
      ))
  ),delay(500),tap(() => this.navigationBlocker.unregister(data.id)),map(resultFn)
);

现在,我对Rxjs还是陌生的,我的问题是:为什么仅在订阅了 afterClosed 后才调用它?像这样:

const dialog = this.dialogService.openDialog(
  // irrelevant stuff ommitted
).subscribe(() => {
  dialog.unsubscribe();
});

我什至无需取消订阅即可正常运行。我正在尝试了解Observable的工作方式。我会怀疑,一旦关闭对话框,便会调用 afterClosed ,类似于事件。为什么我必须订阅它?

非常感谢您的解释,欢呼。

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)