Rxjs,Angular 订阅获得 "ObjectUnsubscribedError"
Rxjs, Angular subscription getting "ObjectUnsubscribedError"
我有一个服务定义了一堆 BehaviorSubject
顶级组件订阅的对象,数据来自后端,但它只是用数据填充主题组件订阅。我还使用 ngOnDestroy
到 .unsubscribe()
已订阅的所有内容。
当我在顶级组件的级别下添加一个新组件时,问题就出现了,该组件也被注入了服务,也订阅了服务上的数据,并且还在内部取消订阅 ngOnDestroy
.这在代码中看起来不错,但实际上它会导致一些错误。
有时在构建组件时,我会在其中得到一些 ObjectUnsubscribedError
,据我所知,BehaviorSubject
我正在订阅一个 [=18] =] 属性 这似乎是错误的来源。
如果没有看到一些代码,很难确定,但听起来您是在 BehaviorSubject
上直接调用 .unsubscribe()
而不是 Subscription
。考虑以下因素:
const source = new BehaviorSubject('some-value');
source.subscribe();
source.unsubscribe();
source.subscribe(); // <-- This line will throw ObjectUnsubscribedError
代替上面的方法,执行以下操作:
const source = new BehaviorSubject('some-value');
const subscription = source.subscribe();
// And when it's time to unsubscribe in ngOnDestroy...
subscription.unsubscribe();
我有一个服务定义了一堆 BehaviorSubject
顶级组件订阅的对象,数据来自后端,但它只是用数据填充主题组件订阅。我还使用 ngOnDestroy
到 .unsubscribe()
已订阅的所有内容。
当我在顶级组件的级别下添加一个新组件时,问题就出现了,该组件也被注入了服务,也订阅了服务上的数据,并且还在内部取消订阅 ngOnDestroy
.这在代码中看起来不错,但实际上它会导致一些错误。
有时在构建组件时,我会在其中得到一些 ObjectUnsubscribedError
,据我所知,BehaviorSubject
我正在订阅一个 [=18] =] 属性 这似乎是错误的来源。
如果没有看到一些代码,很难确定,但听起来您是在 BehaviorSubject
上直接调用 .unsubscribe()
而不是 Subscription
。考虑以下因素:
const source = new BehaviorSubject('some-value');
source.subscribe();
source.unsubscribe();
source.subscribe(); // <-- This line will throw ObjectUnsubscribedError
代替上面的方法,执行以下操作:
const source = new BehaviorSubject('some-value');
const subscription = source.subscribe();
// And when it's time to unsubscribe in ngOnDestroy...
subscription.unsubscribe();