Angular 2:访问组件内html5视频标签的播放和暂停

Posted

技术标签:

【中文标题】Angular 2:访问组件内html5视频标签的播放和暂停【英文标题】:Angular 2 : Access play and pause of html5 video tag inside component 【发布时间】:2017-09-14 02:37:30 【问题描述】:

我是 angular2 的新手,我一直在尝试访问组件内的 html5 视频标签。虽然我使用@ViewChild 装饰器来访问视频标签,但我无法访问播放和暂停功能。 我的 player.html 文件是

<video id="thisVideo" #videoplayer *ngIf="openPlayer" controls autoplay="autoplay" preload="auto" [poster]="src.thumbnailUrlHighRes" >
<source [src]="src.videoURL" type="video/mp4" />
<p>Your browser does not support the video tag.</p>
</video>

视频的自动播放设置为 true。我需要使用空格键播放和暂停视频,为此我已将事件侦听器添加到主机组件。但问题是我无法在事件中访问视频标签的播放和暂停功能听众。 谁能给我一些见解?

【问题讨论】:

【参考方案1】:

我得到了它的工作:

@HostListener('document:keyup', ['$event'])
  onKeyUp(ev:KeyboardEvent) 
    if(ev.code == "Space") 
      let vid = <HTMLVideoElement>document.getElementById("thisVideo");
      if(vid.paused) 
        vid.play();
      
      else 
        vid.pause();
      
    
  

【讨论】:

【参考方案2】:

这个话题已经得到解答,不过我相信使用template reference variables 和ViewChild 可以更简洁地实现这一目标。

在模板中,您可以像这样引用您的视频,并带有#

<video controls #myVideo>
    <source src="http://my-url/video.mp4" type="video/mp4" />
    Browser not supported
</video>
<a (click)="playVideo()">Play video</a>

在你的 .ts 文件中:

import  Component, OnInit, ViewChild, ElementRef  from '@angular/core';

@Component(
  selector: 'app-my-component',
  templateUrl: './my-component.component.html',
  styleUrls: ['./my-component.component.scss']
)

export class MyComponent implements OnInit 
  @ViewChild('myVideo') myVideo: ElementRef; // Prior to Angular 8
  // @ViewChild('myVideo',  static: true ) myVideo: ElementRef; => Angular 8
  constructor()  

  ngOnInit() 
  

  playVideo() 
    /**
     * You are accessing a dom element directly here,
     * so you need to call "nativeElement" first.
     */
    this.myVideo.nativeElement.play();
  


【讨论】:

以上是关于Angular 2:访问组件内html5视频标签的播放和暂停的主要内容,如果未能解决你的问题,请参考以下文章

为啥我无法访问 Angular 组件的传递函数内的类属性?

如何访问 Angular2 中的 HTML 视频元素

在Angular 2中获取视频标签的源尺寸

Angular2 组件标签破坏了 flexbox 布局

ReactJS 组件 HTML5 视频

React 使用 HTML5 视频标签 controlsList 属性