我对Angular组件和OnDestroy生命周期挂钩有一些小疑问。
我有一个Angular服务和Angular组件。我从组件中调用服务内部的函数。由于该函数无法直接返回结果,因此我正在使用回调来获取结果。我将回调函数作为箭头函数传递给组件内部。
我注意到,如果我执行在服务内部调用该函数的函数,然后-在调用回调之前-路由到另一个组件,以使当前组件被销毁,则回调仍然在组件本身之后执行(其中包含带有箭头功能的回调)。
现在我的问题是
这是如何工作的? Angular是否只销毁视图(模板)并等待直到调用回调,然后销毁其余(代码)?
还是打算ngOnDestroy仅破坏视图,而其余部分由垃圾回收/浏览器本身处理?
有什么办法可以检查该组件是否仍然存在并且未被销毁,然后才调用回调函数?
答案 0 :(得分:1)
在内部服务中,如果组件被销毁,则可以维护状态标志将tp设置为true。您可以在组件ngOnDestroy上将服务标志设置为true。当执行回调时,仅当标志为false时才能继续执行。
根据官方的角度文档,当销毁指令,管道,组件或服务时,将调用ondestroy生命周期挂钩。用于实例被销毁时需要进行的任何自定义清除。