Tôi gặp sự cố với ứng dụng AngularJS 2 của mình (Tôi đang sử dụng phiên bản RC5 của AngularJS 2). Dường như một URL được khử trùng đang kích hoạt phát hiện thay đổi, sau đó cập nhật div
bên dưới mặc dù không có bất kỳ thay đổi nào trong trạng thái thành phần của tôi.Vệ sinh URL đang làm mới video YouTube được nhúng
Từ quan điểm của người dùng, điều này thể hiện chính nó là tải lại video trong khi đang phát.
Vì vậy, theo quan điểm thành phần của tôi, tôi có:
<div *ngIf="isVideo(item)">
<iframe [src]="getTrustedYouTubeUrl(item)" scrolling="no" frameborder="0" allowfullscreen></iframe>
</div>
Việc thực hiện các chức năng trên trong các mã thành phần là:
getTrustedYouTubeUrl(linkedVideo:LinkedVideoModel) {
return this.sanitizer.bypassSecurityTrustResourceUrl(linkedVideo.video.url);
}
Trong debugger tôi thấy rằng div được làm mới khá thường xuyên, bởi một cái gì đó được kích hoạt trong khung công tác AngularJS 2.
Vấn đề này sẽ biến mất, nếu tôi thay thế các đoạn mã HTML trên với một URL mã hóa cứng:
<div *ngIf="isVideo(item)">
<iframe src="<hardcoded youtube url here>" scrolling="no" frameborder="0" allowfullscreen></iframe>
</div>
Vì vậy, tôi nghi ngờ rằng sanitization URL đang gây ra nó.
Có ai có thể chỉ cho tôi đúng hướng không? Một ví dụ làm việc về các video YouTube được nhúng có URL của chúng được liên kết với thuộc tính trên thành phần có thể?
Sự cố tương tự này đã xuất hiện cho tôi sau nhiều tháng sử dụng [src] = 'sanitizer.bypassSecurityTrustResourceUrl (this.Url)'. Tôi không có ý tưởng tại sao nó bắt đầu (góc 4,4 và chưa cập nhật nó). Tuy nhiên, giải pháp của bạn đã giải quyết được. Cảm ơn! – Anthony
@Anthony bạn đã giải quyết nó như thế nào? Tôi có cùng một vấn đề bây giờ, tôi đang sử dụng Angular 2. Tôi cũng đang sử dụng [src] = 'sanitizer.bypassSecurityTrustResourceUrl (this.Url), nhưng khi tôi liên kết src với thuộc tính tôi nhận được "L ERI Lỗi: Yêu cầu một ResourceURL an toàn, có một URL (xem http://g.co/ng/security#xss) "tin nhắn. – handris
@handris Xem câu trả lời của tôi ở trên. – Anthony