URL sanitization is causing refresh of the embedded YouTube video URL sanitization is causing refresh of the embedded YouTube video javascript javascript

URL sanitization is causing refresh of the embedded YouTube video


Figured it out.

For anyone interested. The problem was the use of this function in my html

   [src]="getTrustedYouTubeUrl(item)"

The reload side effect was gone once I changed the code to calculate the safe url when the data is loaded in my service and changed the iframe binding to this

    <iframe [src]="item.video.safeUrl" scrolling="no" frameborder="0" allowfullscreen></iframe>    

Note thatr I am now binding to a property.


I would try to use it with pure pipe

Angular executes a pure pipe only when it detects a pure change to the input value. A pure change is either a change to a primitive input value (String, Number, Boolean, Symbol) or a changed object reference (Date, Array, Function, Object).

Pipe might look like (RC.6 - DomSanitizer becomes instead of DomSanitizationService):

@Pipe({ name: 'safe' })export class SafePipe implements PipeTransform {  constructor(private sanitizer: DomSanitizer) {}  transform(url) {    return this.sanitizer.bypassSecurityTrustResourceUrl(url);  }}

And use it as the following:

<iframe [src]="url | safe" frameborder="0" allowfullscreen></iframe> 

Plunker Example (try to push button)


Combined the previous answers to get it working this way:

component.ts (only the relevant parts)

import { DomSanitizer } from '@angular/platform-browser';constructor(   private sanitizer: DomSanitizer   ) {  this.sanitizer = sanitizer;}ngOnInit() { this.getTrustedUrl('http://someUrl');}getTrustedUrl(url:any){  this.safeUrl = this.sanitizer.bypassSecurityTrustResourceUrl(url);}

template.html

<iframe        [src]='this.safeUrl'></iframe>