遇到了问题 - 我需要为不同的模块获取不同的服务实例,但如果我在模块中共享服务,那么为我的所有模块获得一个服务实例。
@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;
}
}
答案 0 :(得分:0)
Yu可以为每个组件创建新的服务实例,而不会注入单例依赖。
export class MyComponent {
userService: UserService;
constructor () {
this.userService = new UserService();
}
}