1

Привет У меня есть службы, какможет ли класс расширить службу и создать экземпляр нового ключевого слова в угловом 2?

@Injectable() 
export class ParentService{ 

    constructor(private http:Http){} 

    get(){this.http.get(...)} 
} 

я могу создать класс, который расширяет услугу? например

export class SomeClass extends ParentService { 
    public name:string; 
    constructor(name:string, private http:Http){ 
    super(http); 
    this.name = name; 
    } 
} 

и использовать нового ключевого слова для создания экземпляра внутри компонента, как

export class Cmp{ 
    instance:any; 
    constructor(){ 
    this.instance = new SomeClass('InstanceOne', ??) 
    this.instance.get(); 
    } 
} 

Идея заключается в том, что с каждым новым экземпляром я могу передать строку как urlPath и использовать этот экземпляр для вызова общих функций от моей службы. Благодаря!

+0

Думаю, вы можете. Вы пробовали это? У вас есть проблемы с этим подходом? – estus

ответ

1

Если вы хотите, чтобы DI передал параметр конструктора, вам необходимо делегировать экземпляр на Angulars DI.

Что вы можете сделать, это

export class Cmp{ 
    instance:any; 
    constructor(http:Http){ 
    this.instance = new SomeClass('InstanceOne', http); 
    this.instance.get(); 
    } 
} 

Или же вы можете указать строку и использовать @Inject('sometoken'), чтобы получить name передаваемого в DI, когда он создает новый SomeClass.

+1

это отлично работает, спасибо! Если я создаю экземпляр нового SomeClass, действительно ли я создаю новый объект javescript, включая свойства и методы ParentService? –

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