【问题标题】:When Components or Services in Angular 2 get destroyed?Angular 2 中的组件或服务何时被破坏?
【发布时间】:2019-02-16 13:48:45
【问题描述】:

所以我查看了关于生命周期钩子 ngOnDestroy() 的官方文档,我了解到它在组件或服务、管道等销毁时被调用。我还在这里查看了本指南,该指南还解释了如何正确处理这种情况:https://brianflove.com/2016/12/11/anguar-2-unsubscribe-observables/

但基本上我不明白 Angular (2+) 何时真正销毁组件?哪些实际事件会导致组件销毁?

对不起,我没有计算机科学背景,答案可能很明显。

【问题讨论】:

  • Destroy 以简单的形式表示从 DOM 中删除其元素。也许你可以从这个link得到答案
  • 谢谢!这篇文章很有趣,但不是一个直接的完整答案,因为 Angular 中的服务无法访问 DOM 等,我想知道其中的内容。
  • Angular 中的服务与组件不同,但是如果您在组件中添加了 provider[service] 并且一旦组件销毁,那么服务也会被销毁,但是如果 app.module 中使用的服务提供 [ service] 那么此服务将保持不变而不会完全销毁。更多信息请关注link。如果你想深入了解,那么你需要对 DOM 和 Injector 模式等有一个很好的了解。

标签: angular memory-leaks


【解决方案1】:

通常是在您使用路由器并在您的应用中导航时。 这样,您就不会通过将内容保存在内存中来耗尽所有资源。 这也是订阅和取消订阅 observables 的好方法。

当使用*ngIf 时,组件也会在每次显示/隐藏之间被销毁。

【讨论】:

  • 嘿,Leon ty,我正在寻找深入的答案——你有什么可以参考的来源吗?我将通过尝试查看挂钩何时被调用来对我的应用进行一些试验,但我仍然不清楚完整的上下文
  • 角度站点包含您需要的所有信息。 angular.io/guide/lifecycle-hooks
  • 正如我上面所说的——我确实看过这个,文档确实涵盖了组件何时发生破坏,但那里的细节很浅。我想了解的是管道、指令的情况。服务等。什么时候应该担心,什么时候不应该担心。我现在在想,可能要回答这个问题,我可能需要在所有页面、组件、服务和管道中插入生命周期钩子,然后跟踪应用程序中的哪些活动导致破坏,然后问一个问题——里面应该做什么除了退订之外的钩子。
猜你喜欢
  • 2019-10-13
  • 2016-01-11
  • 2017-09-25
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-08-03
  • 1970-01-01
相关资源
最近更新 更多