2016-07-12 15 views
11

Angenommen, ich den folgenden Code habe:Angular 2 ändert Bild src-Attribut

<img [src]="JwtService.characterImage(enemy)" 
     class="{{enemy.status}}" 
    (click)="sidenav.toggle();" style="cursor:pointer"> 

Wie kann ich diese img src asttribute aus meinen Komponenten .ts Datei ändern?

Antwort

13

eine imgSrc in Ihrer Komponente

class Component { 
constructor(jwtService: JwtService) { 
    this.imgSrc = JwtService.characterImage(enemy); 
} 
} 

<img [src]="imgSrc" 
     class="{{enemy.status}}" 
    (click)="sidenav.toggle();" style="cursor:pointer"> 
+1

ich mich gefragt, ob es eine Möglichkeit ist, das img zuzugreifen 'src' Attribut ohne eine neue Variable – TheUnreal

+0

erklärt ist es möglich, in Angular2 img src mit Bezug auf Änderungsereignis von Optionsfeld zu ändern, nicht in .ts-Datei? @ Piyush – Vicky

2

Sie könnten einen Hinweis von Ihrem Tag mit $ Ereignisse passieren und ändern hinzufügt es ist Attribut von Ihrem Typoskript-Code.

<img (click)="functionInTypeScript($event.target)"> 

Oder wenn Sie etwas in Image-Tag auf ein anderes Ereignis ändern möchten können Sie es wie diese

<img #image> 
<button (click)=functionInTypeScript(image)> 

tun und dann zugreifen einfach in Typoskript Code wie dieser

functioninTypeScript(image:any) { 
    image.src='path to new image'; 
} 
+1

Dies ist nicht korrekt. Mit #image erhalten Sie ein ElementRef-Objekt, keinen direkten Zugriff auf das DOM-Objekt ... aber natürlich hat das ElementRef eine "nativeElement" -Eigenschaft als Accessor zum DOM-Objekt. So wäre es: image.nativeElement.src = "Pfad zu neuem Bild"; – flackjap

+0

Dieser Code funktionierte für mich –

2

Typoskript :

getImage(image: any, time: string) { 
    const t1 = '06:00'; 
    const t2 = '18:00'; 
    if (time >= t1 && time < t2) { 
     return ('/images/morning.png'); 
    } else { 
     return ('/images/evening.png'); 
    } 
    } 

HTML:

<img [src]="getImage(this,bettrainList.departureTime)" width="25">