Angular 2 - 每个模块的唯一服务实例

时间:2016-12-16 15:26:45

标签: angular typescript

遇到了问题 - 我需要为不同的模块获取不同的服务实例,但如果我在模块中共享服务,那么为我的所有模块获得一个服务实例。

@NgModule({
  imports:      [ BrowserModule ],
  declarations: [ AppComponent, ServiceComponent, Service2Component ],
  bootstrap:    [ AppComponent ],
  providers:    [ UserService ]
})
export class AppModule { }

所以,如果我在这里使用提供者,或者在以下组件的一个模块中使用 - ServiceComponent,Service2Component - 我得到了UserService的一个实例。

只有在所有@Components中使用此服务而不在模块中定义它时,我才能获得唯一实例,例如

@Component({
  selector: 'service2test',
  template: `<h1>Hello, {{user}}.<br>ServiceComponentValue: {{value}}</h1>`,
  providers: [ UserService ]
})

我的问题是 - 是否可以在模块中定义服务,并为每个模块获取唯一值?

我用于测试的服务:

import {Injectable} from "@angular/core";

@Injectable()
export class UserService {
  userName = 'Sherlock Holmes';
  value: number;

  constructor() {
    this.value = Math.random()*100;
  }
}

1 个答案:

答案 0 :(得分:0)

Yu可以为每个组件创建新的服务实例,而不会注入单例依赖。

export class MyComponent {

  userService: UserService;

  constructor () {
    this.userService = new UserService();
  }

}