繁体   English   中英

如何在嵌套组件中只执行一次订阅 ngOnInit

[英]How to execute a subscription ngOnInit only one time in a nested component

我有两个组件:CreateComment 和 DisplayComment。 DisplayComment 组件本身嵌套在其中以显示线程注释。

现在,每当我从 CreateComment 组件创建评论时,我都会调用 CommentService 中的主题来发出事件。 该主题在 DisplayComment 组件中被订阅,我在其中将评论推送到要呈现的评论数组。

由于我有嵌套组件,因此多次调用此订阅(根据线程评论数)。

有人可以告诉我是否有任何方法可以将 DisplayComment 方法上的订阅执行限制为一次?

如果您需要订阅以完成一定数量的排放,您可以查看take运营商。

ngOnInit() {
  this.someService.someObservable.pipe(
    take(1)
  ).subscribe(
    response => {
      // do something
    }
  );
}

您还可以将参数增加到您希望在订阅完成之前发出的值的数量。 对于take(1) ,订阅将在发出一个值后完成。

还有一个 RxJS first()运算符。 请参阅此处了解take(1)first()之间的区别。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM