【问题标题】:Angular component are not getting destroyedAngular 组件没有被破坏
【发布时间】:2019-10-13 20:52:48
【问题描述】:

在 Angular 应用程序中,每次我路由到一个新页面时,我之前页面的组件都会保留在内存中。它没有被破坏,当我路由回该页面时,它会创建一个新实例。

应用程序不是通过 Angular CLI 创建的。这是一个使用 Angular 网站上提供的 webpack 配置的自定义构建应用程序。实际上,我正在对现有的 Angular 应用程序和我创建的用于隔离问题的演示应用程序进行性能改进。

Github https://github.com/bytesofdhiren/angular-memory-issue

基本上,每次我路由到主页或注册页面时,应用程序都会创建一个新的注册组件和主页组件实例。它不会破坏早先创建的组件。

【问题讨论】:

  • 你在使用任何路由复用策略吗?
  • 我没有明确定义任何策略。
  • 在创建第二个堆快照之前,您是否单击存储桶(左上角)强制垃圾收集器?

标签: angular webpack routes webpack-dev-server


【解决方案1】:

每个组件都有一个你需要使用的生命周期:

OnDestroy();

你需要实现方法ngOnDestroy()。 关注this

【讨论】:

  • 问题是你会在那里销毁什么?请查看我在声明中分享的 GitHub 存储库。我已经尝试过 ngOnDestroy() { console.log('do nothing'); }。调用了 Destroy,但 RegisterComponent 仍然保留在内存中。
【解决方案2】:

实际上,我尝试在生产模式下运行上述 Github 应用程序,问题得到了解决。但是我的生产应用程序中的实际问题仍然存在。但这与其他事情有关。我将为此发布一个新问题。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-10-30
    • 2011-09-19
    • 1970-01-01
    • 1970-01-01
    • 2019-02-16
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多