2016-10-07 4 views
1

Возможно ли внедрить службы в родительский класс? У меня есть два класса. Один родительский класс и бывший. 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 родителю, так как каждый ребенок будет использовать эти службы и используются в родительском классе. Как я вижу, угловой не вводит apiService и cacheService в IncomeService. Является ли это признаком или ошибкой?

ответ

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

Да, это немного шаблона, но конструкция конструктора такова, потому что инициализация санального объекта сложна. –

Смежные вопросы