【问题标题】:Youtube Iframe on Angular2Angular2 上的 Youtube iframe
【发布时间】:2017-03-17 02:48:58
【问题描述】:

我正在尝试在 Angular2 应用程序中添加一个 Youtube Iframe。如果我将网址放在 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

我认为这与应用程序从服务器获取数据的时间有关。当页面加载时没有{{video.id}} 因为还没有准备好,但是当由于任何原因准备好时 iframe 没有更新。

有解决这个问题的想法吗?

【问题讨论】:

  • 您好乔尔,感谢您的回复。我已经有了覆盖 iframe 的 ngIf。

标签: angular iframe youtube


【解决方案1】:

您可以使用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);    
  }
}

【讨论】:

  • 谢谢!奇迹般有效!。我想说的是,当我从服务器接收数据时,即在订阅时,我会进行清理。
  • @TIIUNDER 这是一个完整的组件代码,你把代码放在你的组件中,我不明白你的问题。
猜你喜欢
  • 2017-11-01
  • 2016-07-27
  • 2014-12-19
  • 2015-12-11
  • 2023-03-29
  • 2013-09-06
  • 2014-12-27
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多