angular - Finnes det noe som heter valgfri input()-betingelse når man sender verdi til komponenter?


Tittelen kan være misvisende, la meg utdype.

La oss si at vi har en samling og bruker ngfor for å binde dem i HTML. Og deretter, for hver samling, basert på en betingelse, sender vi en verdi til en barnekomponent. For eksempel:

<ng-template ngFor let-person="$implicit" [ngForOf]="peopleAsPreviousCurrentAndNextTriplets" let-i=index let-last=last>
  <app-card 
  [decrement]="(2 - i)" 
  [defaultDiff]="(+30) * (2 - i)" 
  [prevCard]="person.previous" 
  [currentCard]="person.current" 
  [nextCard]="person.next"
  ></app-card>
</ng-template>

Som du kan se, sender vi [prevCard], [currentCard], [nextCard] til komponenten på hvert element i samlingen.

Men jeg vil ikke ha dette.

Jeg vil bare sende [prevCard], [currentCard], [nextCard] når jeg er på last. Og hvis jeg ikke er på last, vil jeg bare sende [currentCard].

Hvordan kan jeg gjøre dette her?

Svar #1

Du kan bare bruke ternæroperatoren for å sjekke om du for øyeblikket er på det siste elementet:

[prevCard]="last === person ? person.previous : null" 

Da kunne du gjøre det samme for de andre inngangene.

Svar #2

Ok takk folkens for hjelpen. Jeg klarte å fikse problemet ved å gjøre det dere foreslo, men tilstanden var litt annerledes:

<ng-template ngFor let-person="$implicit" [ngForOf]="peopleAsPreviousCurrentAndNextTriplets" let-i=index let-last=last>
  <app-card 
      [decrement]   = "(2 - i)" 
      [defaultDiff] = "(+30) * (2 - i)" 
      [prevCard]    = "last ? person.previous : null" 
      [currentCard] = "person.current" 
      [nextCard]    = "last ? person.next : null"
  ></app-card>
</ng-template>

Dette viser egentlig ikke engang det i HTML-en hvis betingelsen feiler, noe som er det jeg ønsket.

Takk igjen for hjelpen din.

Relaterte artikler