2016-10-07 6 views
1

부모 클래스에 서비스를 삽입 할 수 있습니까? 두 클래스가 있습니다. 부모 클래스 하나와 예. 부모를 확장하는 IncomeService입니다.부모 클래스에 서비스 주입

부모 :

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

내가 모든 아이들이 그 서비스를 사용하고 부모 클래스에서 사용되기 때문에 부모에게 servcies을 주입 할

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

IncomeService. 내가 보았 듯이 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

예, 약간의 상용구이지만, 제정신 객체 초기화가 복잡하기 때문에 생성자 디자인이이 방법입니다. –