2016-10-07 5 views
1

親クラスにサービスを注入できますか? 私は2つのクラスを持っています。親クラスとex。親を拡張するIncomeService。親クラスへのサービスの注入

親:

@Injectable() 
export class ObjectService { 
    constructor(protected apiService: ApiService, 
       protected cacheService: CacheService) { 
    } 
} 

IncomeService

@Injectable() 
export class IncomeService extends ObjectService { 
    test() { 
     this.apiService; //is undefined 
    } 
} 

私はすべての子供がそれらのサービスを使用すると、親クラスで使用されているので、親にservciesを注入します。私が見る通り、IncomeServiceにapiServicecacheServiceを注入していません。 それは機能ですか、バグですか?

答えて

3

基本的には、サブクラスでコンストラクタパラメータを繰り返して、super(...)コールを使用してスーパークラスに渡す以外の方法はありません。

@Injectable() 
export class IncomeService extends ObjectService { 
    constructor(protected apiService: ApiService, 
       protected cacheService: CacheService) { 
     super(apiService, cacheService); 
    } 
    test() { 
     this.apiService; //is undefined 
    } 
} 

これを回避するにはいくつかの醜いハックの回答がありますが、私はそれを避けたいと思います。

+0

これはうまくいきますが、多くのコードが必要です...ありがとうございます。 – piernik

+0

はい、定型のビットですが、オブジェクトの初期化が複雑であるため、コンストラクタの設計はこの方法です。 –

関連する問題