2016-08-29 1 views
4

У меня есть родительский сервис, который имеет некоторую зависимость, каккак продлить службу с зависимостями в угловых 2

@Injectable() 
export class ParentService{ 
    constructor(private http:Http, private customService:CustomService){} 
} 

, и я хочу, чтобы распространить эту услугу

@Injectable() 
export class ChildService extends ParentService{ 
    constructor(){ 
    super(??) <= typescript now asking to enter two parameters according to ParentServie's constructor 
    } 
} 

Edit ----- ------------

@Injectable() 
export class ParentService{ 
    constructor(private http:Http, private customService:CustomService){} 
    get(){this.http.get(...)} 
} 

@Injectable() 
export class ChildService extends ParentService{ 
    constructor (private http:Http, private customService:CustomService){ 
    super(http, customService) 
    } 
} 

Тогда я могу использовать в компонентах?

export class Cmp { 
    constructor(private childService:ChildService){ 
    this.childService.get() 
    } 
} 

ответ

8

Параметры необходимости высшего класса повторяться и передается супер вызов:

@Injectable() 
export class ChildService extends ParentService{ 
    constructor (private http:Http, private customService:CustomService){ 
    super(http, customService); 
    } 
} 

Есть некоторые «писаки», чтобы работать вокруг как Inheritance and dependency injection

+0

Я скорректировал кода, будет ли это работать? –

+0

нет, конструктор пропускает параметры. Angular2 DI считывает из параметров конструктора зависимости, которые он должен передать компоненту. 'ChildService' не получит ничего, потому что у него нет параметров конструктора. 'super (http, customService)' недопустимо, потому что 'http' и' customService' не известны в подклассе. –

+0

Извините, забыл добавить параменованные элементы к конструктору дочерних компонентов. Неправильно? –

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