Ich versuche, meinen Dienst zu rufen, um ein Poster Url für alle meine Filme zu bekommen (Willst du das Poster von ihnen zu zeigen). Ich benutze Angular2 und habe jetzt eine Pipe erstellt, die diese Aufgabe übernehmen sollte.Angular 2-Rohr, mit richtig beobachtbaren, gibt meine Pfeife keinen Poster-Pfad
Ich habe diesen Code:
<div class="row small-up-1 medium-up-2 large-up-4">
<div class="column" *ngFor="let movie of MoviesOnNas">
<span>{{movie.MovieYear}}</span>
<img src="{{movie.MovieId | poster}}" class="thumbnail" alt="">
{{movie.MovieTitle}}
</div>
</div>
Hier sehen Sie die let Film von MoviesOnNas, werden alle Filme zeigen, dass es in der MoviesOnNas Objekt ist.
In der Zeile:
<img src="{{movie.MovieId | poster}}" class="thumbnail" alt="">
Ich versuche, eine benutzerdefinierte Rohr ich geschaffen habe zu verwenden. Es sieht aus wie das.
@Pipe({ name: 'poster' })
export class PosterPipe implements PipeTransform {
constructor(public movieService: MovieService) {
}
transform(value: string, args: string[]): any {
if (value) {
// Go call api to get poster.
this.movieService.getMoviePoster(value).subscribe((data) => {
console.log("http://image.tmdb.org/t/p/w500" + data);
var poster = "http://image.tmdb.org/t/p/w500" + data;
return poster;
});
}
else {
// Insert could not find movie poster.
return "../../assets/img/poster.png";
}
}
}
Die Pipe sollte die Poster-URL zurückgeben. Das Problem ist, dass der von mir bereitgestellte Code nicht funktioniert. Es lädt nicht die URL und zeigt das Bild an. In der console.log kann ich sehen, dass der URL-Pfad tatsächlich funktioniert, wenn ich ihn im Browser verwende.
Wenn ich so etwas tun:
if (value) {
return "http://image.tmdb.org/t/p/w500/bqLlWZJdhrS0knfEJRkquW7L8z2.jpg"
}
Dann zeigt sie das Bild richtig. Also muss das Problem das beobachtbare Subscribe sein?
Kann jemand sehen, was hier falsch sein könnte?
Ihr Rohr ist kein String zurück, dass das Problem. Es gibt nicht einmal das Observable zurück (was Sie mit einer 'AsyncPipe' auflösen könnten). – jonrsharpe
Okay, ich werde das jetzt prüfen. Danke für die schnelle Antwort. – Mikkel