gpt4 book ai didi

angular - 组件销毁时提供给组件的 Angular 服务是否被销毁?

转载 作者:行者123 更新时间:2023-12-02 20:18:14 25 4
gpt4 key购买 nike

我有一个服务,每 10 秒检查一次数据状态以更新组件中的标签。这仅在组件存在的页面上才需要。该组件看起来有点像这样:

@Component({
selector: 'editor-status',
templateUrl: './editorStatus.component.html',
providers: [EditorStatusService]
})
export class EditorStatusComponent implements OnDestroy {
constructor(private service: EditorStatusService){};
public ngOnDestroy(): void {
service.destroy();
}
}

我的服务有这种结构:

@Injector()
export class EditorStatusService {
private intervalId: any;
constructor() {
this.intervalId = setInterval(() => {
/* code to update ui */
}, 10000);
}
public destroy(): void {
clearInterval(this.intervalId);
}
}

是否每次实例化组件时都以这种方式为组件提供服务?如果我不销毁监听器,我会在每次加载此页面然后导航离开时造成内存泄漏吗?

最佳答案

组件提供的服务在组件销毁时自动销毁。

您可以通过服务中的 ngOnDestroy 生命周期 Hook 对此进行测试:

ngOnDestroy(): void {
console.log('service destroyed');
}

当组件被销毁时,它应该在控制台中写入'destroyed'。

关于angular - 组件销毁时提供给组件的 Angular 服务是否被销毁?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51957561/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com