【发布时间】:2019-12-06 04:56:46
【问题描述】:
我正在尝试将 YouTube IFrame API 添加到我的应用程序中,该应用程序为用户注册的课程提供视频。我已设置好它,以便我可以向我的 Angular 应用程序发送 YouTube 嵌入代码,并且 IFrame API 将当我第一次加载课程页面时正确加载视频(取自另一个 StackOverflow 帖子)。当我使用 router.navigate 转到其他组件然后返回课程组件时出现问题,视频和 IFrame 不再加载。
我认为,当页面最初加载时,它会创建可以访问 onYouTubeIframeAPIReady 方法的文档对象。一旦我改变路线,我认为以前的文档对象丢失了。
video.component.ts:
ngAfterViewInit() {
const doc = (<any>window).document;
let playerApiScript = doc.createElement('script');
playerApiScript.type = 'text/javascript';
playerApiScript.src = 'https://www.youtube.com/iframe_api';
doc.body.appendChild(playerApiScript);
}
ngOnInit() {
(<any>window).onYouTubeIframeAPIReady = () => {
console.log('Ready');
this.player = new (<any>window).YT.Player('player', {
height: '100%',
width: '100%',
videoId: 'Bey4XXJAqS8',
playerVars: {'autoplay': 0, 'rel': 0, 'controls': 2},
events: {
'onReady': () => {
},
'onStateChange': () => {
}
}
});
};
}
video.component.html
<div class="embed-responsive embed-responsive-16by9">
<div id="player" class="embed-responsive-item"></div>
</div>
即使用户路由到不同的组件,我也希望视频重新渲染或保持渲染状态。如果需要更多信息,请告诉我!
【问题讨论】:
标签: angular typescript youtube-api youtube-iframe-api