Angular依赖注入,服务生命周期

6

关于Angular服务生命周期的一些问题。我目前的理解是,如果你将服务注入到组件中,并且该服务在该组件的providers数组中提供,则该服务将在组件被销毁时被销毁。

以下是一个例子:

@Component({
  selector: 'app-offline-header',
  templateUrl: './offline-header.component.html',
  styleUrls: ['./offline-header.component.css'],
  providers: [WebsocketService]
})

export class OfflineHeaderComponent{ 
  constructor(private socket: WebsocketService) {}
}

在上面的例子中,WebsocketService 是在该组件级别上注入的,而不是在 app.module(或其他模块)中注入。因此,如果销毁了该组件,则服务实例也将被销毁。
问题:
  1. 当销毁该组件时,WebsocketService 实例是否也会被销毁?
  2. 如果我们在根模块(app.module)中提供这些服务,那么该服务是否为单例?如果是单例,那么何时创建该单例?
1个回答

7

您可以在这里了解更多相关信息。

回答您的问题:

1- 是的,服务会被销毁。它完全取决于提供服务的组件生命周期。

请注意,组件提供的服务可能具有有限的生命周期。每个新组件实例都有其自己的服务实例,当组件实例被销毁时,该服务实例也将被销毁。

2- 是的,它是单例并在整个应用程序中共享。我不确定单例服务何时创建,但我认为它们是在组件之前创建的,因此如果组件需要服务,则可以在其构造函数中获取它。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接