私はAngularJS 2アプリに問題があります(私はAngularJS 2のRC5バージョンを使用しています)。消毒されたURLが変更検出をトリガーしていて、コンポーネントの状態を変更していないのに、div
を更新しているようです。URLサニタイズが埋め込みYouTubeビデオの更新を引き起こしています
これは、再生中にビデオのリロードとして現れます。
は、だから私は持っている私のコンポーネントビューで:
<div *ngIf="isVideo(item)">
<iframe [src]="getTrustedYouTubeUrl(item)" scrolling="no" frameborder="0" allowfullscreen></iframe>
</div>
コンポーネントのコードで上記の関数の実装は次のとおりです。
デバッガでgetTrustedYouTubeUrl(linkedVideo:LinkedVideoModel) {
return this.sanitizer.bypassSecurityTrustResourceUrl(linkedVideo.video.url);
}
私はdiv要素がかなり頻繁に更新されることを参照してください。 AngularJS 2フレームワークでトリガーされたものによって。私はハードコーディングされたURLと上記のHTMLスニペットを置き換える場合
問題は、消える:
<div *ngIf="isVideo(item)">
<iframe src="<hardcoded youtube url here>" scrolling="no" frameborder="0" allowfullscreen></iframe>
</div>
は、だから私は、URLのサニタイズがそれを引き起こしていることを疑っています。
誰でも正しい方向に向けることができますか?コンポーネントのプロパティにURLがバインドされている埋め込みYouTube動画の実例?
この問題は[src] = 'sanitizer.bypassSecurityTrustResourceUrl(this.Url)'を使用して数ヶ月後に私にポップアップしたばかりです。私はそれがなぜ始まったのか分かりません(角4.4、それを更新していません)。しかし、あなたのソリューションはそれを解決しました。ありがとう! – Anthony
@Anthonyどうやってそれを正確に解決しましたか? [src] = 'sanitizer.bypassSecurityTrustResourceUrl(this.Url)を使用していますが、プロパティにsrcをバインドすると、「エラー:エラーが発生しました.RedUserURLが必要ですが、 URL(http://g.co/ng/security#xss参照)」メッセージが表示されます。 – handris
@handris上記の私の答えを参照してください。 – Anthony