Angular 如何将订阅逻辑从ngOnInit移动到ngOnChange

Angular 如何将订阅逻辑从ngOnInit移动到ngOnChange,angular,rxjs,angular2-observables,Angular,Rxjs,Angular2 Observables,这是一个关于Angular的更一般的问题——我对Angular还很陌生——一直都是一个反应呆子 我的任务是将逻辑转移到ngOnChanges,涵盖我们应该订阅、保留现有订阅或取消订阅的每个案例。我该怎么做 以下是一些示例代码: ngOnInit() { const obsValue$ = combineLatest([ this.store.pipe(select(this.example1Selector.getData())), this.store

这是一个关于Angular的更一般的问题——我对Angular还很陌生——一直都是一个反应呆子

我的任务是将逻辑转移到ngOnChanges,涵盖我们应该订阅、保留现有订阅或取消订阅的每个案例。我该怎么做

以下是一些示例代码:

ngOnInit() {

    const obsValue$ = combineLatest([
        this.store.pipe(select(this.example1Selector.getData())),
        this.store.pipe(select(this.example2Selector.getData()))
    ]).pipe(
        tap(([important1, important2]) => {
            this.important1 = important1;
            this.important2 = important2;
        })
    );
}

我想将此代码移动到ngOnChange,仅在需要时在中订阅,必要时保留,必要时取消订阅。如何做到这一点?

您应该取消订阅您不再需要的订阅,或者通过调用SubscriptionUnsubscripte要求您保存订阅,或者通过使用Subjectcomplete结束事件流来完成所有订阅,但这并不总是适用的

否则可能导致资源泄漏。这取决于实际的可观测性,以及它是否闭合为某个点


另外,我通常也会在Ngondestory lifecycle hook中取消订阅/完成。

问题一-为什么你认为你不能?问题二——你为什么要这样做?这是一个非常广泛的问题,你没有给出任何细节。你的问题需要更多细节,目标是什么?如果可以,请提供更多信息并显示一些代码。如何处理订阅取决于具体情况。如果您的组件是子组件,我根本不会手动订阅,而是使用异步管道。原则上,将订阅从ngOninit移动到ngOnchanges不应该是一个问题,但这也没有意义。我更新了一些信息,以便更清楚地了解我想要实现的目标。