2016-07-12 13 views
6

Ich habe eine "Logo" -Komponente, die im Wesentlichen ein Bildelement ausgibt. Die Vorlage sieht wie folgt aus:Bildelement funktioniert nicht in angular2 und firefox

<picture class="logo"> 
<source srcset="{{srcsetMobile}}" media="(max-width: 767px)"> 
<source srcset="{{srcsetDesktop}}" media="(min-width: 768px)"> 
<img class="logo" title="{{title}}" alt="{{alt}}" src="{{fallbackSrc}}" 
</picture> 

In angular2 dies erzeugt

<picture _ngcontent-lox-3="" class="logo"> 
<source _ngcontent-lox-3="" media="(max-width: 767px)" ng-reflect-srcset="/assets/img/Logo-mobile.png" srcset="/assets/img/Logo-mobile.png"></source> 
<source _ngcontent-lox-3="" media="(min-width: 768px)" ng-reflect-srcset="/assets/img/Logo.png" srcset="/assets/img/Logo.png"></source> 
<img _ngcontent-lox-3="" class="logo" ng-reflect-title="title" title="title" ng-reflect-alt="alt text" alt="alt text" ng-reflect-src="/assets/img/Logo-mobile.png" src="/assets/img/Logo-mobile.png"> 
</picture> 

In Chrome funktioniert dies sehr gut, aber in Firefox nur den mobilen Bild Lasten. Das Tag wird außerhalb von Angular geladen. Wenn ich einen Web-Inspector verwende und die eckigen Attribute entferne, funktioniert alles gut, also denke ich, dass es ein Browser-Bug ist, aber ich dachte, ich würde hier posten, um zu sehen, ob andere das Problem hatten oder wenn jemand einen Workaround hat.

+0

Haben Sie dieses Problem gelöst? – dewwwald

+0

Ja, das gleiche für mich. –

+0

Wenn Sie "src" anstelle von "srcset" ändern, funktioniert es für mich, aber ich weiß nicht, ob das in älteren Browsern funktioniert. –

Antwort

0

Für mich funktioniert das nicht richtig in Firefox. Im Inspektor kann ich sehen, dass das DOM korrekt ist, aber die Bilder werden nicht richtig geladen. Nur die letzte Quelle wird gerendert, unabhängig von der Bildschirmgröße. Chrome und Safari funktionieren ohne Probleme.

Ich habe das folgende HTML in einer Angular 2+ Komponente.

<picture class="view-header__logo-picture"> 
    <source 
     media="(max-width: 1040px)" 
     srcset="images/logo-32x32.png, images/logo-64x64.png 2x" 
    /> 
    <source 
     media="(min-width: 1041px)" 
     srcset="images/logo-72h.png, images/logo-144h.png 2x" 
    /> 
    <img class="view-header__logo-image" 
     src="images/logo-72h.png" 
     alt="{{ 'general.company-title' | translate }}" 
    /> 
</picture> 
+1

Ich fand eine Lösung für mein Problem hier: https://github.com/angular/angular/issues/13947 – Gunnaway

+0

Vielen Dank @gunnaway !!! SOLEved mein Problem auch !!! – neoswf