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);
    }

}

Relaterte artikler