一种不使用参数共享和实例化的Angular服务



我有一个Angular Service(myService(,它被注入到许多组件和其他服务的构造函数中。

我希望这些用法中的每一种都有自己的myService实例,这样就不会共享任何数据。

我还希望myService能够实例化一个参数来定义其中的一些行为。因此,在构造函数中使用它的每个地方,我都希望能够指定这个参数。

这可能吗?

将您的服务添加到组件的providers中。这将为每个组件实例创建自己的服务实例。例如:

@Component({
// ...
providers: [MyService]
})
export class MyComponent  {
// ...
}

您可以使用FactoryProvider指定服务参数。示例:

@Component({
// ...
providers: [
{
provide: MyService,
useFactory: () => new MyService('param1') // create service with 'param1' for MyComponent instances
}
]
})
export class MyComponent  {
// ...
}

最新更新