Verwendung von binären Bilddaten aus der Web-API als Hintergrundbild des DOM-Elements (Angular)

7

Ich habe viel Mühe, ein Bild zu bekommen, das ich von meiner Web-API abrufe, um es als Hintergrundbild in meiner Angular-Anwendung anzuzeigen.

Die Aktion der Web-API, die das Bild zurückgibt, sieht folgendermaßen aus:

%Vor%

Das ist zur Zeit meine Angular Service Methode (aber ich habe viele Alternativen ausprobiert):

%Vor%

Und das versuche ich auf das [style.background-image] des DOM-Elements anzuwenden:

%Vor%

Wie ich bereits sagte, habe ich versucht, verschiedene Dinge aus Dingen, die ich im Internet gefunden habe, zu versuchen, aber ich habe ein inhärentes Missverständnis der meisten beteiligten Stücke. Wie kommt meine Web-API zurück? Wie kann ich mit dieser Clientseite umgehen? Wie massiere ich den Inhalt in etwas, das für eine background-image css-Eigenschaft geeignet ist? Ich würde das gerne viel besser verstehen, zusätzlich dazu, dass das funktioniert. Alle Hilfe wird sehr geschätzt!

Aktualisieren

Ich habe auch versucht, die Web-API-Aktion so zu ändern, dass eine Base64-Zeichenfolge wie folgt zurückgegeben wird:

%Vor%

und behandeln es Client-Seite wie folgt:

%Vor%

und Vereinfachung des Aufrufers meines Dienstes, um [style.background-image] des DOM-Elements zu liefern:

%Vor%

Ich habe console.log ed die Antwort und es sieht in der Tat wie eine Base64-String (denke ich?). Aber das CSS ändert sich nie.

Update 2

Mein Markup ist derzeit das:

%Vor%

Der Code meiner Komponente lautet derzeit:

%Vor%

Ich habe den Punkt erreicht, an dem, wenn ich console.log out, kopieren Sie es und fügen Sie es in die CSS-Regeln für die Div in Dev-Tools, das Bild zeigt sich. Ich habe versucht, das in NgZone auszuführen, und das CSS wird immer noch nicht angezeigt. Jede und jede Hilfe wird geschätzt.

Aktualisierung 3

Wenn ich also <div class="image" [style.background-image]="project.image | async"></div> in <img [src]="project.image | async" alt=""> ändere, wird das Bild asynchron angezeigt. Das unglückliche an diesem Ansatz ist, dass das Bildfehler-Symbol sichtbar ist, während sich die Anforderung im Flug befindet. Dieses Fehlersymbol bleibt für alle Elemente bestehen, die kein Bild zurückgeben (unvollständige Datenbank)

    
Jake Smith 22.07.2017, 18:15
quelle

2 Antworten

3

Warum können Sie Ihren Link nicht direkt auf background-image setzen?

%Vor%

Der Browser wird Ihre Arbeit für Sie erledigen.

Sie müssen sicher sein, dass der Webserver das rechte Bild und die Header zurückgibt

    
Anton Lee 18.08.2017 03:52
quelle
2

Um zu vermeiden, dass das Fehlerbild angezeigt wird, bis das tatsächliche Bild geladen ist, ändern Sie Ihren HTML-Code wie folgt:

%Vor%

Die Lösung in Ihrem Update 3 funktioniert auch. Aber hier ist ein anderer Weg, es zu tun. Sie können die [style] -Direktive des div so einstellen, dass background-image hinzugefügt wird. Sie müssen die Stile bereinigen, wenn Sie sie an das Dom übergeben.

  

In Ihrer Komponente.html:

%Vor%
  

.. um das Fehlerbild zu entfernen, bis wir das Bild bekommen, fügen wir ein    *ngIf :

%Vor%
  

... und in Ihrem component.ts:

%Vor%     
Faisal 15.08.2017 07:20
quelle