未共享并使用参数实例化的Angular服务

时间:2018-11-05 13:55:35

标签: angular typescript dependency-injection

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

我希望每种用法都具有自己的myService实例,因此不共享任何数据。

我还希望使用定义了某些行为的参数来实例化myService。因此,在构造函数中使用它的每个位置,我都希望能够指定此参数。

这可能吗?

1 个答案:

答案 0 :(得分:1)

将您的服务添加到组件的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  {
  // ...
}