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.
