avhengighetsinjeksjon - Angular 2 DI i basis Component
La oss si at jeg har en basekomponent -
export class BaseComponent {
public constructor(public myService: MyService) {
}
}
Og en avledet komponent -
export class DerivedComponent extends BaseComponent {
public constructor(public myService: MyService) {
super(myService);
}
}
Men jeg trenger egentlig bare myService-avhengigheten i BaseComponent. Finnes det noen måte å unngå å måtte legge til den ekstra konstruktøren i DerivedComponent?
Å fjerne avhengigheten fra DerivedComponent ser ut til å resultere i at den ikke blir injisert.
Svar #1
Det finnes allerede lignende spørsmål med omfattende diskusjon.
Svaret er egentlig - nei, det kan du ikke.
- https://github.com/angular/angular/issues/5675
- https://github.com/angular/angular/issues/5155
- Hvordan utvide en komponent med avhengighetsinjeksjon i Angular 2?
Har ikke funnet de andre.
Svar #2
du kan ikke fjerne konstruktøren fra DerivedComponent-klassen. Men med koden din har du to egenskaper som heter 'myService' i DerivedComponent-klassen. Du kan forenkle konstruktøren:
export class DerivedComponent {
public constructor(myService: MyService) {
super(myService);
}
}
