Um rief ein YouTube-Film in einem Iframe zu laden, ich habe folgende in meiner Vorlage:ngSrc Funktion unendlich in angular2
<iframe [src]="getYouTubeUrl(currentItem.id)" frameborder="0" allowfullscreen></iframe>
In der Komponente I definiert haben:
getYouTubeUrl(id:string):SafeResourceUrl {
let url:string = `https://www.youtube.com/embed/${id}`;
return this.sanitizer.bypassSecurityTrustResourceUrl(url);
}
Irgendwie , diese Funktion wird unendlich aufgerufen (während sich die resultierende URL nicht ändert). Das Ergebnis ist, dass das Video nicht geladen werden kann. Was könnte hier falsch sein?
Verwenden statt reinem Rohr. Siehe auch http://stackoverflow.com/questions/38037760/how-to-set-iframe-src-in-angular-2-without-causing-unsaf-value-exception/38037914#38037914 und Ausgabe auf github https://github.com/angular/angular/issues/11518 – yurzui
Danke, das funktioniert! :) Ich weiß nicht, warum Change Detection mehrfach ohne Pipe ausgeführt wird, aber nur einmal mit der Pipe? Könnte es sein, weil die Funktion jetzt eine Zeichenfolge (die URL) zurückgibt, die ein Primitiv ist, und keine SafeResourceUrl, die kein Primitiv ist? – dndr
Pure Pipe wird nur ausgeführt, wenn eine reine Änderung des Eingabewerts festgestellt wird. Auf der anderen Seite ruft Ihre Funktion innerhalb der Vorlage alle 'Application.tick' http://stackoverflow.com/questions/39757603/unraveling-angular-2-book-chapter-1-example-5/39761822#39761822 – yurzui