我的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框架中觸發的東西。
問題消失,如果我替換HTML片段以上硬編碼的URL:
<div *ngIf="isVideo(item)">
<iframe src="<hardcoded youtube url here>" scrolling="no" frameborder="0" allowfullscreen></iframe>
</div>
所以我懷疑URL消毒導致它。
任何人都可以指向正確的方向嗎?一個嵌入式YouTube視頻的實例可以將其URL綁定到組件上的某個屬性?
在使用[src] ='sanitizer.bypassSecurityTrustResourceUrl(this.Url)'幾個月後,我剛剛彈出這個問題。我不知道它爲什麼開始(角4.4和沒有更新它)。但是,您的解決方案解決了它。謝謝! – Anthony
@Anthony你是怎麼解決它的?我現在有同樣的問題,我正在使用Angular 2.我也使用[src] ='sanitizer.bypassSecurityTrustResourceUrl(this.Url),但是當我將src綁定到屬性時,我得到「錯誤錯誤:需要一個安全的ResourceURL,有一個URL(見http://g.co/ng/security#xss)「消息。 – handris
@ handris查看我上面的答案。 – Anthony