首页 > 解决方案 > 在组件中使用动态服务

问题描述

我需要在两个不同的模块中使用一个组件,该组件正在使用具有特定状态的服务。该组件还具有使用相同服务的子组件。我需要服务的两个实例,因为我不希望模块 1 中的组件中的操作影响模块 2 中服务的状态。我当前的解决方案是将服务注入组件装饰器中,并通过该范围将服务注入组件实例。我将此特定实例作为@input字段传递给子组件。

有更好的解决方案吗?

标签: angularangular8

解决方案


我会创建一个抽象类并在组件中扩展它,我会为每个页面创建新的组合。

export abstract class Base{
    constructor(protected service:any){}
}

export class Comp1 extends Base{
     constructor(protected service: Service1){
         super(service);
     }
}
export class Comp2 extends Base{
     constructor(protected service: Service2){
         super(service);
     }
}

这样,您只需编写一次代码,并且非常灵活地覆盖任何内容以防万一。


推荐阅读