Mac*_*chu 5 typescript youtube-iframe-api webpack angular
如何使用Typescript构造YT.Player对象并getCurrentTime()
在Angular2组件中访问其属性?
我尝试通过npm安装几个YouTube包装器(例如:youtube-player),并添加了YouTube的类型定义,并在app.ts中引用:
/// <reference path="../../typings/main/ambient/youtube/index.d.ts" />
但导入时仍然出错,例如:import YouTubePlayer from 'youtube-player';
returnCannot find module 'youtube-player'.
我已经分叉了Angular2 预启动/ Webpack启动器,我的源代码就在这里
你不应该需要任何包装,包括它自己不是那么多.
1.)通过脚本标记包含youtube iFrame API.
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);
}
Run Code Online (Sandbox Code Playgroud)
2.)在youYouTubeIframeAPIReady()函数中注册你的回调,Youtube API
当页面完成下载播放器API的JavaScript时,它将调用.
ngOnInit() {
(<any>window).onYouTubeIframeAPIReady = () => {
this.player = new (<any>window).YT.Player('ytplayer', {
height: '100%',
width: '100%',
videoId: 'YourVideoId',
playerVars: {'autoplay': 1, 'rel': 0, 'controls': 2},
events: {
'onReady': () => {
},
'onStateChange': () => {
}
}
});
};
}
Run Code Online (Sandbox Code Playgroud)
您也可以设置autoplay
为0
不加载.
现在我们有了this.player
组件级别,你可以做其他操作,如:
this.player.pauseVideo();
,this.player.loadVideoById('someOtherVideoId')
等...从'youtube-player'导入YouTubePlayer; 返回无法找到模块'youtube-player'
您尝试使用youtube-player
的库与要导入的库完整类型定义不同:https://github.com/DefinitelyTyped/DefinitelyTyped/blob/master/youtube/youtube.d.ts(这是类型类型定义)对于官方youtube库)
您可以在以下位置轻松创建自己的声明vendor.d.ts
:
declare module 'youtube-player' {
var foo:any;
export = foo;
}
Run Code Online (Sandbox Code Playgroud)
而且你绝不会比使用纯JavaScript更糟糕.
这包括:https://basarat.gitbooks.io/typescript/content/docs/types/migrating.html#
归档时间: |
|
查看次数: |
9318 次 |
最近记录: |