首页 > 解决方案 > 反应形式的角度退订

问题描述

我有一个组件充当大型容器组件的子组件,该组件编排稍大的表单(使用反应式表单)

我有这段代码:

ngOnInit() {
    this.subscriptions.push(this.form.get('total').valueChanges.subscribe(data => {
      this.cdr.markForCheck();
    }));
  }

ngOnDestroy(): void {
    this.subscriptions.forEach((sub) => {
        sub.unsubscribe();
    })
}

问题:这是必需的吗?即使组件与表单一起被销毁?

标签: angularrxjsangular-reactive-forms

解决方案


如果它是一个完成的序列(如 http 请求),则不需要手动清理(假设您手动订阅控制器)。

如果它是一个无限序列,比如这个,你应该取消订阅它。

以防万一,取消订阅所有可观察对象被认为是一种很好的做法。

我为此使用subsink。John Papa 在视频中谈到了这个并推荐了这个库。


推荐阅读