typescript - 将 YouTube iframe API 与 Angular2 和 Typescript 一起使用

标签 typescript angular webpack youtube-iframe-api

如何构建 YT.Player 对象并访问其属性 getCurrentTime()在使用 Typescript 的 Angular2 组件中?

我尝试通过 npm 安装几个 YouTube 包装器(例如:youtube-player),并添加了 Type definitions for YouTube ,并在 app.ts 中引用:

/// <reference path="../../typings/main/ambient/youtube/index.d.ts" />

但是导入的时候还是报错,eg: import YouTubePlayer from 'youtube-player';返回 Cannot find module 'youtube-player'.

我已经 fork 了 Angular2 preboot/Webpack初学者,我的源代码库是 here

最佳答案

您应该不需要任何包装器,包括它自己并不多。

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);
}

2.) 在 onYouTubeIframeAPIReady() 中注册您的回调当页面完成为播放器 API 下载 JavaScript 时,Youtube API 将调用的函数。

  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': () => {
          }
        }
      });
    };
  }

您还可以将autoplay 设置为0,这样它就不会在加载时播放。

现在我们在组件级别上有了 this.player,您可以进行其他操作,例如:

  • 暂停:this.player.pauseVideo();,
  • 加载其他视频 this.player.loadVideoById('someOtherVideoId') 等等...

关于typescript - 将 YouTube iframe API 与 Angular2 和 Typescript 一起使用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36467532/

相关文章:

node.js - mongoose.connect 错误 TS2531 : Object is possibly 'null'

javascript - typescript :定义没有特定键和链对象的接口(interface)

javascript - 如何将静态目录绑定(bind)到 Angular 4 应用程序

ecmascript-6 - 如何排查 es6 模块依赖问题?

javascript - Webpack 中多个入口点的通用样板

javascript - VSCode TypeScript Lint

typescript - 如何将 TypeScript 构造函数参数属性与类继承和父类(super class)构造函数结合起来?

angular - Firebase 上托管的 Ionic 4 应用程序仅在重新加载时返回 404

javascript - 将 id 属性添加到 FormControl 元素或父 Angular 7

javascript - Action 文本 (Trix) 样式不会在生产中加载(Rails 6、Heroku)