2016-11-15 15 views
1

私は自分の機能をServiceBaseに分割しました。基本的な操作と特定の機能を持つ実際のサービスを分割しました。 ServiceBaseはいくつかの共通サービスを使用する必要があり、特定のサービスは特定のサービスを使用する必要があります。依存関係を注入したサービスベースの拡張

だから私はServiceBase持っている:

export class ServiceBase { 
    constructor(private commonService: CommonService){} 
} 

を、私はServiceBaseを拡張し、いくつかの他のサービスを注入する必要があるので、今、私は、問題を抱えています。私が試した:

@Injectable() 
export class MyService extends ServiceBase { 
    constructor(private commonService: CommonService, private dedicatedService: DedicatedService) { 
    super(commonService) 
    } 
} 

が、私はcommonServiceの定義を上書きすること、エラーが発生します。

私はcommonServiceでスーパーを呼び出す必要があるため、他の方法では、次のようにコンパイルされません。

@Injectable() 
export class MyService extends ServiceBase { 
    constructor(private dedicatedService: DedicatedService) { 
    super() 
    } 
} 

は、どのように私は、このような場合に対処修正するのですか?

答えて

1

子のcommonServiceで「プライベート」を削除し、親のcommonServiceを保護するようにしてください。したがって、次のようになります:

export class ServiceBase { 
    constructor(protected commonService: CommonService){} 
} 

@Injectable() 
export class MyService extends ServiceBase { 
    constructor(commonService: CommonService, private dedicatedService: DedicatedService) { 
    super(commonService) 
    } 
} 

また、このクラスの子クラスでは、this.commonServiceを使用することができます。

関連する問題