首页 > 解决方案 > 有没有办法以角度对服务进行分组?

问题描述

我有一个稀疏项目,通过它的许多组件调用服务以从 API 服务器获取数据。该服务处理从登录到彼此没有直接影响的多个其他功能。然而,将它们分开会给必须导入多个服务的构造函数带来麻烦。例如,这个:

@Component()
class ComponentExemple {
     constructor(private back: BackendService) {}
}

会变得更像这样

@Component()
class ComponentExemple {
     constructor(
     private back: BackendService0,
     private back: BackendService1,
     private back: BackendService2,
     private back: BackendService3,
     ...
     ) {}
}

我要问的是:有没有办法将多个服务组合成一个?(就像一个类可以扩展另一个父类,但在这种情况下,它需要扩展多个其他父类)。像这样:

@Injectable()
export class BackendService extends DataService1, DataService2, ... { }

即使这是不可能的(我想这不太可能),是否有一些指导方针可以使构造函数参数不那么混乱?

我需要模块化这个后端服务,以便更容易维护代码,以及其他贡献者。

标签: angulartypescriptinheritanceangular-services

解决方案


您可以尝试使用 mixins 来进行某种多重扩展,但我建议改用组合:

@Injectable()
export class BackendService {
  constructor(
    public data1: DataService1,
    public data2: DataService2,
    public data3: DataService3,
    public data4: DataService4
  ) {}
}

@Component()
class ComponentExemple {
  constructor(
    private back: BackendService,
  ) {}

  ngOnInit() {
    this.back.data1.getStuff();
  }
}

推荐阅读