angular - Angular2 上的 Youtube Iframe

标签 angular iframe youtube

我正在尝试在 Angular2 应用程序中添加 Youtube Iframe。如果我将 url 放入 iFrame 中,一切正常:

<iframe width="560" height="315" src="http://www.youtube.com/embed/wzrnuUOoFNM" frameborder="0" allowfullscreen></iframe>

但是如果我尝试从服务器获取 URL,并订阅组件中的 OnInit 方法,就像这样,

<iframe width="560" height="315" src="http://www.youtube.com/embed/{{video.id}}" frameborder="0" allowfullscreen></iframe>

视频不显示,控制台显示此错误:

Uncaught TypeError: Cannot set property stack of [object Object] which has only a getter

我觉得跟app从服务器取数据的时间有关。当页面加载时没有 {{video.id}} 因为还没有准备好,但是当由于任何原因准备就绪时 iframe 没有更新。

有什么解决办法吗?

最佳答案

您可以使用 DomSanitizer以通过 Angular 的内置清理。

import {Component} from '@angular/core';
import {DomSanitizer} from '@angular/platform-browser';

@Component({
  selector: 'my-app',
  template: `    
    <iframe width="560" height="315" [src]="url" frameborder="0" allowfullscreen></iframe>
  `,
})
export class App {
  name:string;
  video: any = {id: 'wzrnuUOoFNM'};
  baseUrl:string = 'https://www.youtube.com/embed/';
  constructor(private sanitizer: DomSanitizer) { 
    this.url = this.sanitizer.bypassSecurityTrustResourceUrl(this.baseUrl + this.video.id);    
  }
}

关于angular - Angular2 上的 Youtube Iframe,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40402849/

相关文章:

objective-c - iOS YouTube 视频上传错误

javascript - 将嵌套组件孙子之间的事件发送到根组件

Angular 2 : Wrapping a component inside a parent component

Angular 2 Materials 在 karma 测试中发出警告

javascript - 使用 Javascript 从父 iFrame 到子 iFrame 进行跨域通信

youtube - YouTube API。如何获得近似数量的结果?

HTTP 和嵌套对象 (Angular2 RC1 + TS)

html - 将响应式 youtube iframe 嵌入页面中心

javascript - Safari 和 Safari 移动设备上的 Iframe localStorage

youtube - Discord.js-音乐机器人。它播放任何视频,但不播放受版权保护的音乐