在Angular 7中,服务默认是以单例模式提供的,这意味着每个注入该服务的组件都会共享同一个实例。但是有时候我们希望创建多个服务实例,可以通过以下几种方式来解决:
@Injectable({
providedIn: 'root'
})
export class MyService {
constructor() { }
// 其他服务方法...
static create(): MyService {
return new MyService();
}
}
在组件中使用工厂函数创建服务实例:
@Component({
selector: 'app-my-component',
template: `
`
})
export class MyComponent {
myService: MyService;
constructor() { }
createService() {
this.myService = MyService.create();
}
}
@Injectable({
providedIn: 'any'
})
export class MyService {
constructor() { }
// 其他服务方法...
}
@Component({
selector: 'app-my-component',
template: `
`,
providers: [MyService]
})
export class MyComponent {
myService: MyService;
constructor(private myServiceInstance: MyService) { }
createService() {
this.myService = new MyService();
}
}
注意:以上方法都会创建多个服务实例,如果需要在多个组件之间共享数据或状态,这些方法可能并不适用。