angular - Hur injicerar man en förfaderkomponent av samma typ?


Angulairs beroendeinjektion gör att du kan injicera vilken förfaderkomponent som helst, på följande sätt:

@Component({ ... })
export class MyComponent {
    constructor(_parent: AppComponent) {}
}

Men i mitt fall vill jag injicera en förfaderkomponent som är en annan instans av samma komponentklass, på det här sättet:

@Component({ ... })
export class MyComponent {
    constructor(_parent: MyComponent) {}
                         ^^^^^^^^^^^
}

Detta orsakar ett cykliskt beroendefel, antagligen eftersom det hänvisar till samma instans.

I mitt fall kan jag inte injicera den andra komponenten via @Input() eftersom det inte kommer att vara en direkt förälder, utan en helt dynamisk/okänd morfar/farfarskomponent.

Svar #1

Använd @SkipSelf()-dekoreraren.

export class HelloComponent  {
  constructor(@SkipSelf() @Optional() private parent: HelloComponent) {
  }
}

Demo

Relaterade artiklar