2017-03-07 10 views
2

Ich habe die folgende BaseComponent.Angular 2 - erben Anbieter von der Basisklasse

@Component({ 
    providers: [PresetService, CollectionService, RecordService] 
}) 
export class BaseComponent{ 
    constructor(private collectionService:CollectionService, private recordService:RecordService, private presetService:PresetService){ 
    } 
} 

nun alle Kinder sollten die Anbieter erben und es ist Instanzen:

ich folgendes BaseComponent haben.

Das scheint nicht möglich zu sein, da ich super vom Kind anrufen muss. Ich müsste also von Kind zu Kind an Provider-Instanzen übergeben. Ist es möglich, dass der Elternteil die Instanzen bereitstellen kann?

Antwort

1

https://github.com/angular/angular/commit/f5c8e09

Zierer:

1) listet die Dekorateure der Klasse und ihre Eltern in der Vorfahren ersten Ordnung

2) nur den letzten Dekorateur jeder Art (zB @Component/...)

Konstruktorparameter: Wenn eine Klasse von einer Elternklasse erbt und deklariert keinen Konstruktor, es erbt den Konstruktor der übergeordneten Klasse und damit die Parametermetadaten dieser übergeordneten Klasse.

Lifecycle-Hooks: Befolgen Sie das normale Klassenvererbungsmodell, d. H. Lifecycle-Hooks der Elternklassen werden auch dann aufgerufen, wenn die Methode in der Kindklasse nicht überschrieben wird.

Als Abhilfe Sie

const baseComponentProviders = [PresetService, CollectionService, RecordService]; 

@Component({ 
    providers: baseComponentProviders 
}) 
class BaseComponent { 

} 
@Component({ 
    providers: baseComponentProviders 
}) 
export class ChildComponent extends BaseComponent{ 
    constructor(){ 
     super() 
    } 
} 
verwenden könnte
Verwandte Themen