Angular 7服务不作为单例。
创始人
2024-10-17 02:00:15
0

在Angular 7中,服务默认是以单例模式提供的,这意味着每个注入该服务的组件都会共享同一个实例。但是有时候我们希望创建多个服务实例,可以通过以下几种方式来解决:

  1. 使用工厂模式创建服务实例: 创建一个工厂函数,用于创建服务的实例。在每个需要使用服务的组件中,调用工厂函数来创建服务实例。
@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();
  }
}
  1. 使用provideIn: 'any'提供服务: 在服务的@Injectable装饰器中,将provideIn属性设置为'any',这样每个注入该服务的组件都会创建一个独立的实例。
@Injectable({
  providedIn: 'any'
})
export class MyService {
  constructor() { }

  // 其他服务方法...
}
  1. 使用Angular的依赖注入机制创建多个服务实例: 在组件的providers属性中,为服务提供一个新的实例,这样每个组件都会使用一个独立的服务实例。
@Component({
  selector: 'app-my-component',
  template: `
    
  `,
  providers: [MyService]
})
export class MyComponent {
  myService: MyService;

  constructor(private myServiceInstance: MyService) { }

  createService() {
    this.myService = new MyService();
  }
}

注意:以上方法都会创建多个服务实例,如果需要在多个组件之间共享数据或状态,这些方法可能并不适用。

相关内容

热门资讯

第八分钟辅助!心悦填大坑辅助,... 第八分钟辅助!心悦填大坑辅助,果然存在有辅助插件(有挂详细)1、任何心悦填大坑辅助透视是真的假的的玩...
6分钟辅助!同乡游辅助软件,其... 6分钟辅助!同乡游辅助软件,其实是有辅助插件(有挂解密)1、进入游戏-大厅左侧-新手福利-激活码辅助...
6分钟辅助!三江互娱辅助,其实... 6分钟辅助!三江互娱辅助,其实是有辅助脚本(详细教程)三江互娱辅助脚本下载中分为三种模型:三江互娱辅...
9分钟辅助!福建天天开心万能辅... 9分钟辅助!福建天天开心万能辅助,切实真的有辅助脚本(有挂透明挂)进入游戏-大厅左侧-新手福利-激活...
第九分钟辅助!微信小游戏万能修... 第九分钟辅助!微信小游戏万能修改器,真是有辅助app(揭秘有挂)1.微信小游戏万能修改器 选牌创建新...
三分钟辅助!心悦辅助器,果然存... 三分钟辅助!心悦辅助器,果然存在有辅助app(有挂助手)所有人都在同一条线上,像星星一样排成一排,每...
第2分钟辅助!潮汕来物局有透视... 第2分钟辅助!潮汕来物局有透视软件吗,好像有辅助神器(讲解有挂)在进入潮汕来物局有透视软件吗软件靠谱...
6分钟辅助!新道游科技透视通用... 6分钟辅助!新道游科技透视通用版1,总是真的有辅助神器(有挂秘诀)1、任何新道游科技透视通用版1透视...
十分钟辅助!欢聚水鱼脚本,好像... 十分钟辅助!欢聚水鱼脚本,好像真的是有辅助神器(有挂透明挂)欢聚水鱼脚本脚本下载中分为三种模型:欢聚...
第4分钟辅助!丫丫打锅子辅助,... 第4分钟辅助!丫丫打锅子辅助,确实是真的有辅助技巧(有挂教学)1、进入到丫丫打锅子辅助是否有挂之后,...