离子角分量:如何销毁?

Mar*_*eco 5 navigation ionic4 angular7

我有一个 Ionic 4 应用程序,以及带有自定义组件的 Angular 7。在这个组件中,我实现了对事件的订阅。活动发布后,我毫无问题地收到消息。如果我离开该组件并再次返回该组件,如果发布了事件,我会收到该消息两次。似乎同一控制器的前一个实例没有被销毁(如果 ngOnDestroy 被触发 - 我已经插入了一个 console.log)。如果我重复此操作(离开并返回),我会收到 3 条消息,然后是 4 条,依此类推。

所以,我的问题是:该组件是被破坏还是保留在内存中?

我希望每次进入组件时都会有一个新实例,并且所有先前的实例都会被销毁。

Fab*_* N. 0

从您的描述来看,您的订阅似乎独立于组件的生命周期。

如果您不取消订阅,它将继续监听并在每次收到新事件时触发。即使 Angular 删除了旧的组件实例并且不再使用它,浏览器也会将其保留在内存中,以便能够为事件处理程序提供上下文。

您是否尝试在 ngOnDestroy 方法中显式取消订阅?