Voici mon code ci-dessous
Je ne fais que si alors autre condition que je veux faire sinon si si condition basée sur trois valeurs je veux changer l'image
<img [src]="status.getRequestStatus() == 'granted' ? 'assets/imgs/trafficlight_green.png':'assets/imgs/trafficlight_red.png' " class="image--background" >
ceci est pour if and else
condition je veux ajouter if else if if
like if (new) {someimage} else if (new1) {some image1} if (new2) {some image2}
4 Réponses :
Vous pouvez utiliser plusieurs balises img
à la condition ci-dessous -
<img [src]="imageSource" class="image--background">
Ou utiliser une variable pour stocker la source de l'image dans votre component.ts code> puis liez-le dans
component.html
comme ci-dessous -
<img *ngIf="new" [src]="assets/imgs/trafficlight_green1.png" class="image--background"> <img *ngIf="new1" [src]="assets/imgs/trafficlight_green2.png" class="image--background"> <img *ngIf="new2" [src]="assets/imgs/trafficlight_green3.png" class="image--background">
Déplacez la logique vers le composant.
Dans votre component.html
someFn() { let rtn = ''; if(...) { rtn = ... } else if (...) { ... } else { ... } return rtn; }
Dans votre component.ts
<img [src]="someFn()" class="image--background" >
essayez cette solution en fonction de mon commentaire:
Consultez l'exemple sur StackBlitz
La validation se fait sur le composant, sur votre getRequestStatus () J'ai utilisé ngOnInit avec un timeout pour changer "dynamiquement"
la source est automatiquement mise à jour en fonction de la source changement de propriété.
view:
import { Component, OnInit } from '@angular/core'; @Component({ selector: 'my-app', templateUrl: './app.component.html', styleUrls: ['./app.component.css'] }) export class AppComponent implements OnInit { name = 'Angular'; sourceImage: string; ngOnInit() { this.sourceImage = 'https://angular.io/assets/images/logos/angular/angular.svg'; setTimeout(()=> { this.sourceImage = 'https://dwglogo.com/wp-content/uploads/2017/03/AngularJS_logo_004.svg'; }, 2000) } }
composant:
<img [(src)]="sourceImage" width="200" />
Vous pouvez conserver l'instruction ternaire dans le modèle si vous le souhaitez avec le flux if else, car un ternaire peut être chaîné. Cela pourrait ressembler à ceci.
if (new) { 'green.png' } else if (new1) { 'red.png' } else { 'amber.png' } // being new2
Cela ressemblerait à
<img [src]="'new' ? 'green.png': new1 ? 'red.png' : 'amber.png'" class="image-background">
J'espère que c'est ce que vous recherchez.
Je pense que si vous utilisez les modifications
[(src)] = "sourceProperty"
basées sur cela, et je déplacerais deffenitly cette logique vers le composant de la vue, et sur le status.getRequestStatus () vous peut définir la propriété en fonction du résultat.