无限叫为了在一个iframe加载YouTube视频ngSrc功能,我有我的模板如下:在angular2
<iframe [src]="getYouTubeUrl(currentItem.id)" frameborder="0" allowfullscreen></iframe>
在我所定义的组件:
getYouTubeUrl(id:string):SafeResourceUrl {
let url:string = `https://www.youtube.com/embed/${id}`;
return this.sanitizer.bypassSecurityTrustResourceUrl(url);
}
不知何故,这个函数被无限调用(而生成的url不会改变)。结果是视频无法加载。这里有什么可能是错的?
使用纯管代替。另请参阅http://stackoverflow.com/questions/38037760/how-to-set-iframe-src-in-angular-2-without-causing-unsafe-value-exception/38037914#38037914和github上的问题https:/ /github.com/angular/angular/issues/11518 – yurzui
谢谢,这个工程! :)我不知道为什么更改检测没有管道而是多次运行,但只有一次使用管道?难道是因为现在函数返回一个字符串(url),它是一个基元,而不是SafeResourceUrl,它不是一个原始的? – dndr
仅当管道检测到对输入值的纯粹更改时才会执行纯管道。另一方面,模板中的函数将调用每个'Application.tick'。http://stackoverflow.com/questions/39757603/unraveling-angular-2-book-chapter-1-example-5/39761822#39761822 – yurzui